2012-04-06 94 views
1

我想知道爲什麼軌的form_tag重定向到/資產

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

提供以下錯誤?

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,只是將它作爲第一個參數的字符串傳遞。

更多信息here當然:)

+0

非常感謝你=) – Sasha 2012-04-06 04:43:21

1

的「:行動」應接受「動作」,如一個名字:「創建」,「更新」,或「消滅」

:action => "/search" 

這裏的「/搜索」不是名稱,但一個「網址」,這是不合法的。

btw,我建議你使用xx_url來代替{:action =>「」,:controller =>「」}}

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

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

非常感謝! 我認爲它可能會更好,只是改變爲search_path,因爲它做我想要的 – Sasha 2012-04-06 04:43:36