我有一个管理部门设置,但我无法让“更新”路线发挥作用。
通过编辑视图点击“更新”时出错:
“没有任何行动回应2。”
由于某种原因,路由响应:id为:action。
参数:
参数:{“commit”=>“更新”,“操作”=>“2”,“_ method”=>“put”,“admin”=> {“ended_at( 1i)“=>”2010“,”ended_at(2i)“=>”8“,”ended_at(3i)“=>”22“},”id“=>”编辑“,”控制器“ => “中管理/订阅”}
编辑视图uri:
/管理/订阅/ 2 /编辑
修改视图
<% form_for :admin, @subscription, :html => {:method => :put} do |f| %>
<p>
<%= f.label :ended_at %><br />
<%= f.date_select :ended_at %>
</p>
<p>
<%= f.submit 'Update' %>
</p>
<% end %>
路线:
map.namespace :admin do |admin|
admin.resources :subscriptions
end
我认为我需要在form_for方法或路线中做一些不同的事情,但我尝试过的一切都不起作用。
感谢您的帮助!!
答案 0 :(得分:1)
应该是这样的:
<% form_for [:admin, @subscription] do |f| %>
通过将:admin
和@subscription
放在方括号中,这会使其成为一个数组,并将其作为第一个参数传递给form_for
。这样做的好处是,如果@subscription
是预先存在的记录(as-in,由find
找到,不是用new
创建的),那么Rails将知道设置{{1}方法form
。
答案 1 :(得分:0)
这有效:
<% form_for :admin, @subscription, :html => {:method => :put}, :url => { :action => "update" } do |f| %>
虽然看起来很冗长。有更好的想法吗?
答案 2 :(得分:0)
尝试
- form_for :subscription, @subscription do |f|
我们在这里使用formtastic。