Rails嵌套在单一资源表单上的资源

时间:2011-09-09 19:27:27

标签: ruby-on-rails forms

我遇到的问题是Rails没有在动作的参数中发布任何内容。 我正在使用具有嵌套复数资源的单一资源,这可能是也可能 不是问题的来源(Rails与form_for和singular存在问题 资源网址)。

无论如何,我的路线中有这个:

resource :event do
    resources :actions, :only => [:create], :controller => "events/actions"
end

观点:

<%= form_for([@event, Action.new], :remote => true) do |f| %>
  <div class="field">
    <%= f.label :team_id %>
    <br />
    <%= f.text_field :team_id %>
  </div>
  <div class="field">
    <%= f.label :message %>
    <br />
    <%= f.text_field :message %>
  </div>
  <div class="field">
    <%= f.label :score %>
    <br />
    <%= f.number_field :score %>
  </div>
  <br />
  <%= f.submit "Update score" %> or <%= link_to "cancel", "#", :id => "cancel" %>
<% end %>

创建动作:

def create
    @event = Event.find(params[:event_id])
    @action = @event.actions.create(params[:action])
end

相当标准,不用担心。 但是当我从Rails获得参数时,没有任何东西存在。 :(

PARAMS:

Started POST "/event/actions.4e67f09349ae71090c00000e"
Processing by Events::ActionsController#create as
Parameters: {"utf8"=>"Γ£ô", "authenticity_token"=>"stuff", "commit"=>"Update score"}

Completed 500 Internal Server Error in 31ms

这里发生了什么?

修改

如果我在视图中删除了“:remote =&gt; true”行, 我看到在我的参数中我得到一个参数“:format” 这似乎是事件的ID。

然而,我仍然没有得到行动参数。 :(

1 个答案:

答案 0 :(得分:1)

理想情况下,我希望看到这些事件&amp;行动模型 - 我怀疑这就是问题所在。没有看到这些,一些建议:

  • 事件模型中是否设置了'accepts_nested_attributes_for:action'?

  • 从两个模型中删除任何'attr_accessible'行&amp;看看事情是否有效。 (请记住,您需要为父模型中的嵌套表单设置可访问的属性)

  • '动作'似乎是模型的不明确名称。 rails可能会使用与实际操作相关的内容覆盖“动作”方法

希望这会有所帮助 - 如果您仍然无法找到解决方案,我建议发布模型。