게시하는 링크에 Rails link_to 사용
게시물 요청을 제출하는 데 필요한 링크가 있습니다. 일반적으로 jQuery를 사용하고 링크의 기본 동작을 방지 한 다음 대상에 양식을 제출합니다. 이것은 Rails가 나를 도울 수 있어야 할 것 같습니다. 물론이 link_to
메소드에는 POST http 메소드를 지정하는 옵션이 있습니다.
link_to "Profile", 'http://example.com/profile', method: :post
작동하지만 2 개의 매개 변수도 추가해야합니다. 나는 시도했다 :
link_to "Profile", 'http://example.com/profile', method: post, param1: 'value1', param2: 'value2'
<a>
HTML 요소 에 해당 매개 변수를 추가 했지만 링크를 클릭 할 때 제출하지 않았습니다.
<a rel="nofollow" param1="value1" param2="value2" data-method="post" href="http://example.com/profile">Profile</a>
link_to
또는 다른 Rails 메소드를 사용하여 매개 변수로 POST 요청을 수행하는 방법이 있습니까? Rails 3.2.9를 사용하고 있습니다.
짧은 대답은 "매개 변수"가 의미하는 것이 양식 필드라면이를 수행 할 수 없다는 것입니다 (적어도 내가 볼 수있는 간단한 방식은 아닙니다). 대신 링크처럼 보이도록 스타일이 지정된 제출 버튼이있는 양식을 사용해야합니다 (원하는 경우).
반면에 쿼리 매개 변수를 의미 했다면 다음과 같이 작동합니다.
link_to "Profile", profile_path(@profile.id, param1: 'value1', param2: 'value2'), method: :post
다음과 같이 URL에 매개 변수를 인코딩 할 수 있습니다.
link_to "Profile", 'http://example.com/profile?' + {param1: 'value1', param2: 'value2'}.to_param, method: :post
귀하의 요구에 맞지 않으면 link_to
.
데이터를 게시하려면 양식이 필요합니다. 그러나 제출 버튼은 필요하지 않습니다. 어떤 이유로 링크처럼 보이게하려면 실제로 JavaScript를 통해 양식을 제출하는 링크로 만들 수 있습니다. 아래 예에서 POST 리소스는 필드가 필요하지 않은 REST 작업이므로 양식 입력 컨트롤이 없습니다. 일부 데이터를 게시하려면 양식에 숨겨진 입력 필드를 넣으십시오.
<%= form_tag('http://something_postable', :method => :post, :class => 'internal') %></form>
<%= link_to_function('Label for Link', 'previous("form").submit()', :title => 'Hover text for link') %>
양식에 클래스가 할당되어 CSS를 통해 스타일을 지정하거나 숨길 수 있습니다 (예 : 'display : inline').
사용자가 JS를 사용하지 않도록 설정했거나 기본적으로 제공되는 눈에 잘 띄지 않는 JS 라이브러리를 제거한 경우 요청을 link_to
통해 자동으로 제출됩니다 GET
.
일반적으로 저는 POST
요청 을 수행하는 링크를 좋아하지 않습니다 . 그것이 폼과 버튼의 역할이라고 생각합니다.
따라서 쉽고 안전한 대안은 Rails button_to 도우미 를 사용하는 것입니다 .
button_to 'Profile', profile_path(@profile, param1: 'value1', param2: 'value2')
button_to
또한 method
옵션 을 지원 하지만 기본값으로 설정 post
되어 있으므로 생략했습니다.
매개 변수와 http 메소드는 함께 있어야합니다. {param1: 'value1', param2: 'value2', :method: :post}
<%= link_to "Profile", profile_path(@profile), {param1: 'value1', param2: 'value2', method: :post} %>
참고 URL : https://stackoverflow.com/questions/13414663/using-rails-link-to-for-links-that-post
'your programing' 카테고리의 다른 글
실패한 지점에서 maven 빌드를 시작할 수 있습니까? (0) | 2020.10.14 |
---|---|
간단한 JSON 라이브러리를 사용하여 json 파일을 Java로 읽는 방법 (0) | 2020.10.14 |
JavaScript의 인라인 이벤트 처리기에 이벤트를 인수로 전달하는 방법은 무엇입니까? (0) | 2020.10.14 |
보호 된 생성자의 실제 용도는 무엇입니까? (0) | 2020.10.14 |
Asp.Net MVC의 DataAnnotations StringLength에있는 텍스트 상자의 maxlength 특성 (0) | 2020.10.14 |