如何获得自定义操作才能到达正确的位置?

时间:2009-10-24 17:58:32

标签: ruby-on-rails routing

我是Ruby on Rails的新手,我确信我只是缺少一些简单而愚蠢的东西,但我无法弄清楚如何让我的'帐户/注册'动作正常工作。

这就是我的溃败文件中的内容:

map.connect ':controller/:action'
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
map.root :controller => "home"

我已将此添加到我的帐户控制器:

def signup
  @account = Account.new

  respond_to do |format|
    format.html # signup.html.erb
    format.xml  { @account }
  end
end

我已将signup.html.erb添加到帐户视图文件夹中。

然而,当我在浏览器中访问它时,我收到此错误:

在AccountsController#show中显示ActiveRecord :: RecordNotFound 无法找到ID =注册

的帐户

我做错了什么?

4 个答案:

答案 0 :(得分:2)

在routes.rb文件

上添加以下代码
ActionController::Routing::Routes.draw do |map|
  map.connect 'account/signup', :controller => 'account', :action => 'signup'
  ...
  ...
  ...
end

我认为你的意思是帐户而不是帐户。

答案 1 :(得分:2)

这是一个提示:

如果您运行rake routes,它会显示您应用的所有可能路线。 然后,根据您输入的URL是否正确解决它应该是显而易见的。

有关路线的详细概述,请阅读此guide。你可以用路线做很多事情,所以值得花点时间阅读它。

答案 2 :(得分:1)

如果您想要遵循REST模式,您应该将控制器称为会话,并且您的注册操作应该是,因此您可以在路线中执行以下操作:

map.resources :sessions

强烈建议所有Rails的新人使用本网站:

http://guides.rubyonrails.org/

答案 3 :(得分:0)

当添加到do | map |时,以下也会这样做routes.rb的部分

map.resource :account, :member => {:signup => :get}

将为您的帐户控制器创建标准路由,以及添加新路由帐户/注册。除signup_account_urlsignup_account_path

外,它还提供常用的网址助手