2010-08-22 81 views
0

我有一个管理部分设置,但无法让“更新”路线工作。
“不采取行动回应2”:rails管理员编辑查看路径路径

通过编辑视图击中“更新”时,遇到了错误

由于某些原因,路由对:action采用:id作为响应。

参数:
参数:{ “提交”=> “更新”,“行动”=> “2”, “_method”=> “放”, “管理”=> {“ended_at (1i)“=>”2010“,”ended_at(2i)“=>”8“,”ended_at(3i)“=>”22“},”id“=>”edit“,”controller“=>管理员/订阅“}

的编辑视图的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方法或者也许是不同的航线做一些事情,但一切我试过不工作。

感谢您的帮助!

回答

1

它应该是这样的:

<% form_for [:admin, @subscription] do |f| %> 

通过将:admin@subscription在方括号中,这使得它在其中被作为第一个参数,以传递form_for阵列。这样做的好处是,如果@subscription是先前存在的记录(如在find中找到的记录,而不是由new创建的记录),那么Rails将知道将form方法设置为PUT

+0

嗯。谢谢!适用于其他控制器。对于这一个,我在做这个时得到一个“表演”动作。不是一个大问题,因为我能够强制行动,但它不干净;) – djburdick 2010-08-24 00:02:46

+0

超凡!避免我一些问题 – 2012-02-04 07:29:45

0

这工作:

<% form_for :admin, @subscription, :html => {:method => :put}, :url => { :action => "update" } do |f| %> 

似乎冗长虽然。任何更好的想法?

+0

查看我的回答:http://stackoverflow.com/questions/3543673/rails-admin-edit-view-path-routes/3543798#3543798 – 2010-08-22 22:55:39

0

尝试

- form_for :subscription, @subscription do |f| 

我们使用formtastic这里。

+0

':subscription'是多余的?他还为Subscription资源命名,因此他需要使用Array表单。 – 2010-08-22 22:55:19