Rails:更新嵌套资源

时间:2013-01-06 16:37:12

标签: ruby-on-rails forms

我有两个模型,Proposals和Proposal Replies。在我的路线中,我已经在提案中嵌套了提案回复。我有这样的表格:

<%= 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"

为什么要尝试POST来编辑,而不仅仅是PUTing?我可以通过插入一些像这样的URL选项来破解它:

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

但这并不像Rails那样。还有什么我可能做错了?

1 个答案:

答案 0 :(得分:1)

我猜您根本不需要使用路径助手。如果您有正确的路线定义:

resources :proposals do
  resources :proposal_replies
end

您应该可以将[@proposal, @proposal_reply]传递给form_for

<%= form_for [@proposal, @proposal_reply], :remote => true do |f| %>