1

なぜだろうと思っていた

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

次のエラーが発生しますか?

No route matches [POST] "/assets"

/search が原因であることがわかりました。コードを次のように書き直した場合...

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

/search がないと、コントローラー メソッドが正しく呼び出されます。誰かが理由を説明できますか?ありがとう

4

2 に答える 2

3

これはあなたが意味することを行います:

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

の最初のパラメータform_tagが与えられたハッシュの場合、バックグラウンドで に渡され、ルートのアクション部分として解釈され、逆マップされますurl_for:action

あなたは(私が推測するように)単純な URL を渡したいだけなので、最初の引数の文字列として渡すだけです。

もちろん、詳細はこちら:)

于 2012-04-06T04:18:49.220 に答える
1

「:action」は、「create」、「update」、「destroy」などの「action」の名前を受け取る必要があります。

:action => "/search"

ここで「/search」は名前ではなく「url」であり、これは正当ではありません。

ところで、{ :action => "", :controller => ""} の代わりに xx_url を使用することをお勧めします。

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

また

# you defined "search_path" in config/routes.rb
<%= form_tag search_path, :method => "get" %>
于 2012-04-06T04:14:38.363 に答える