2012-04-06 3 views
1

을 리디렉션 때 form_tag 궁금 해서요?레일/자산

No route matches [POST] "/assets" 

나는/검색 때문입니다. 코드를 다시 작성하면 .../검색없이 코드를 올바르게 호출합니다.

<%= form_tag({ :action => "search", :method => "get" }, :class => "span4") do %> 
... 
<% end %> 

왜 누군가가 설명 할 수 있을까요? 감사

답변

3

이것은 당신이 무엇을 의미 할 것입니다 :

<%= form_tag("/search", :method => "get" , :class => "span4") do %> 
... 
<% end %> 

form_tag의 첫 번째 매개 변수는 주어진대로 해시 인 경우는 뒤에-the- 전달 장면을 url_for으로 지정합니다. 이는 :action을 역방향 매핑 할 경로의 동작 부분으로 나타냅니다.

일반 URL을 전달하기를 원하기 때문에 첫 번째 arg의 문자열로 전달하면됩니다.

자세한 정보 here 물론 :

+0

고맙습니다 =) – Sasha

1

은 ": 행동"여기

:action => "/search" 

은 "/ 검색"이 아닌 "파괴", "생성", "갱신", 또는 같은 "행동"의 이름을 받아야한다 이름이지만 "URL"은 합법적이지 않습니다.

btw, {: action => "", : controller => ""} 대신 xx_url을 사용하는 것이 좋습니다.

<%= form_tag "/search", :method => "get" %> 

또는

# you defined "search_path" in config/routes.rb 
<%= form_tag search_path, :method => "get" %> 
+0

고마워요! 내가 원하는 것을 수행하기 때문에 search_path로 바꾸는 것이 더 나을 것 같아 – Sasha