5

ルーティングしようとしています:

scope :shortcut do
 resources :text_elems
end

部分的なフォームで基本的な足場を使用する

*_form.html.erb*
<%= form_for(@text_elem, :shortcut => @shortcut) do |f| %> 
...

問題は次のとおりです。編集アクションを呼び出すと、フォームhtmlは次のように表示されます。

<form ... action="/25/text_elems/25">

注:新しいアクションは、フォームアクションを正しくレンダリングします。

<form ... action="/home/text_elems">

したがって、form_forがブロックを処理するときに、私の:shortcutパラメータが:idパラメータによって切り捨てられているように見えます。これで、form_forブロックで:url => {...}を手動で作成すると、:shortcut paramを使用して正しくルーティングするアクションを取得できますが、コードをドライに保ちたいので、レポートを作成しますそれが本当にバグであるならば、レールへのこの問題。

他の誰かがこれをバグとして確認できますか?

4

2 に答える 2

2

私は同じ問題を抱えていましたが、上記の答えはどれも役に立ちませんでした。

このページの最後の答えは私のために働いた...

https://rails.lighthouseapp.com/projects/8994/tickets/6736-problem-with-scoped-routes-and-form_for-helper

于 2012-01-17T11:50:09.893 に答える
2

実際には、デフォルトのto_param(@text_elemを渡すだけの場合に呼び出される)に依存するのではなく、値を完全なハッシュとして渡すことができます。

<%= form_for({:id => @text_elem.to_param, :shortcut => @shortcut}) do |f| %> 

ただし、これが実際にネストされたリソースである場合は、次のこともできます。

<%= form_for([@shortcut, @text_elem]) do |f| %> 
于 2011-05-16T18:07:12.190 に答える