在我的AdminController中,我有名为edit,update和update_admin的方法。并在route.rb
resources :session, :only => [update]
match '/:controller(/:action(/:id))'
end
当我浏览网址'/ users / edit / 1'时匹配。从这个页面我想在AdminController中的update_admin中调用action方法。怎么做?
我的edit.erb有
<%= render :partial => '/submit', :locals =
> {:button_html => f.submit('Update'), :validate_present => true}
%>
答案 0 :(得分:0)
首先,要检查您的路线,请转到控制台并执行
rake routes | grep session
在那里你将列出你的rails应用程序的所有路由(与grep匹配)
在第二个我没有得到你的routes.rb
你会做什么resources :session, :only => [update] do
match '/:controller(/:action(/:id))'
end
或
resources :session, :only => [update]
match '/:controller(/:action(/:id))'
end
这些是两件不同的事情。我想你想要最后一个。但是我们走了,还有另外一个问题
resources :session, :only=>[update]
这会引发错误。(未定义的局部变量或方法`update'代表#) 如果要指定操作,则需要将其作为键
resources :session, :only=>[:update]
但你也想要编辑信息,(编辑是表格,更新动作以保存更改)所以你必须这样做
resources :users, :only=>[:edit, :update]
现在检查你的佣金路线,看看瞧!
edit_session GET /session/:id/edit(.:format) {:action=>"edit", :controller=>"session"}
session PUT /session/:id(.:format) {:action=>"update", :controller=>"session"}
<强> //修改
如果你想在你的admin_controller中这样做,你应该有一个命名空间
#i take example for a user
namespace :admin do
resources :user :only => [:edit, :update]
end
如果您现在想要从视图中链接到该路径,则命名该路径 edit_admin_user_path
并且在表单中,您还需要在form_for中添加名称空间,如:
=form_for [:admin, @user] do |f|