0

プロポーザルとプロポーザルリプライの2つのモデルがあります。私のルートでは、プロポーザル内にプロポーザル返信をネストしました。私はこのフォームを持っています:

<%= form_for proposal_proposal_reply_path(@proposal, @proposal_reply), :remote => true do |f| %>
  <%= f.text_area :body %>
  <%= f.submit 'Submit' %>
<% end %>

[送信]をクリックすると、ルーティングエラーが発生します。

No route matches [POST] "/proposals/1/proposal_replies/4/edit"

単にPUTするのではなく、POSTして編集しようとするのはなぜですか?次のようなURLオプションを挿入することで、ハッキングして機能させることができます。

<%= form_for proposal_proposal_reply_path(@proposal, @proposal_reply), :remote => true, :method => :put, :url => {:action => :update} do |f| %>

ただし、これはRailsの方法のようには感じられません。他に何が間違っている可能性がありますか?

4

1 に答える 1

1

パスヘルパーを使用する必要はまったくないと思います。正しいルート定義がある場合:

resources :proposals do
  resources :proposal_replies
end

[@proposal, @proposal_reply]あなたはに渡すことができるはずですform_for

<%= form_for [@proposal, @proposal_reply], :remote => true do |f| %>
于 2013-01-06T17:13:11.773 に答える