如何在route.rb中写匹配

时间:2011-11-24 05:17:57

标签: ruby-on-rails

在我的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}
 %>

1 个答案:

答案 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|