我遇到的问题是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。
然而,我仍然没有得到行动参数。 :(
答案 0 :(得分:1)
理想情况下,我希望看到这些事件&amp;行动模型 - 我怀疑这就是问题所在。没有看到这些,一些建议:
事件模型中是否设置了'accepts_nested_attributes_for:action'?
从两个模型中删除任何'attr_accessible'行&amp;看看事情是否有效。 (请记住,您需要为父模型中的嵌套表单设置可访问的属性)
'动作'似乎是模型的不明确名称。 rails可能会使用与实际操作相关的内容覆盖“动作”方法
希望这会有所帮助 - 如果您仍然无法找到解决方案,我建议发布模型。