路线定义
resources :interruptions do
collection do
post :pause
post :restart
end
end
但是,在intervento_controller show action中,声明了@interruption = Interruption.new
,用于创建相关记录的表单
<%= form_for @interruption, url: pause_interruptions_path do |f| %>
<%= f.hidden_field :intervento_id, value: @intervento.id %>
<%= submit_tag "Pausa", name: 'pausa_intervento' %>
<% end %>
rails正在路由到intervento操作,而不是form_for url声明中所述的操作。
Started PATCH "/interventos/32" for ::1 at 2017-01-17 13:04:49 +0100
Processing by InterventosController#update as HTML
Parameters: {"utf8"=>"✓", [...] "interruption"=>{"intervento_id"=>"32"}, "pausa_intervento"=>"Pausa", "id"=>"32"}
Intervento模型确实允许accepts_nested_attributes_for :interruptions
,但我预计这不是必需的,因为表单声明了要路由到的动作。此外,一次只能创建或编辑一条记录。
如何实现这一目标?
答案 0 :(得分:0)
您的pause
行动是在收集时定义的,即/interventos/post
,
但是,您的表单是为interruption
实例定义的。
你认为你打算这样做
resources :interruptions do
member do
post :pause
# post :restart
end
end
您还需要相应地更改pause_interruptions_path
。
另请尝试使用f.submit
submit_tag
似乎被视为输入字段。