【问题标题】:How do I get a custom action to go to the right place?如何获得自定义操作以转到正确的位置?
【发布时间】:2009-10-24 17:58:31
【问题描述】:

我是 Ruby on Rails 的新手,我确信我只是错过了一些简单而愚蠢的东西,但我不知道如何让我的“帐户/注册”操作正常工作。

这是我的 routs 文件中的内容:

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 添加到帐户视图文件夹中。

但是当我在浏览器中访问它时,我得到了这个错误:

ActiveRecord::RecordNotFound in AccountsController#show 找不到 ID=signup 的帐户

我做错了什么?

【问题讨论】:

  • 你应该考虑使用宁静的路线。

标签: ruby-on-rails routing


【解决方案1】:

在您的 routes.rb 文件顶部添加以下代码

ActionController::Routing::Routes.draw do |map|
  map.connect 'account/signup', :controller => 'account', :action => 'signup'
  ...
  ...
  ...
end

另外我认为您的意思是帐户而不是帐户。

【讨论】:

    【解决方案2】:

    这里有一个提示:

    如果您运行rake routes,它将向您显示您的应用程序的所有可能路线。 然后根据您输入的 URL 是否会被正确解析应该很明显。

    要全面了解路线,请阅读此guide。你可以用路线做很多事情,所以值得花一些时间阅读它。

    【讨论】:

      【解决方案3】:

      如果你想遵循 REST 模型,你的控制器应该被称为 sessions 并且你的注册操作应该是 new,所以在你的路由中你可以这样做:

      map.resources :sessions
      

      向所有 Rails 新手强烈推荐这个网站:

      http://guides.rubyonrails.org/

      【讨论】:

        【解决方案4】:

        当添加到 do |map| 时,以下内容也会这样做部分路线.rb

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

        将为您的帐户控制器创建标准路由,并添加新的路由帐户/注册。除了signup_account_urlsignup_account_path之外,它还提供了常用的url助手

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-17
          • 1970-01-01
          • 2016-03-30
          相关资源
          最近更新 更多