Ruby on rails Rails:路由到自定义控制器操作

Ruby on rails Rails:路由到自定义控制器操作,ruby-on-rails,controller,routes,Ruby On Rails,Controller,Routes,我真的很难理解路线,我希望有人能帮助我 这是我的自定义控制器 class SettingsController < ApplicationController before_filter :authenticate_user! def edit @user = current_user end def update @user = User.find(current_user.id) if @user.update_att

我真的很难理解路线,我希望有人能帮助我

这是我的自定义控制器

class SettingsController < ApplicationController
  before_filter :authenticate_user!

    def edit
      @user = current_user
    end

    def update
      @user = User.find(current_user.id)
      if @user.update_attributes(params[:user])
        # Sign in the user bypassing validation in case his password changed
        sign_in @user, :bypass => true
        redirect_to root_path
      else
        render "edit"
      end
    end
end
这不管用,因为那样我会

undefined local variable or method `edit_settings_path' for #<#<Class:0x00000001814ad8>:0x00000002b40a80>
未定义的局部变量或方法“编辑设置路径”#
我该怎么走?我想不出来。如果我将“/settings/edit”而不是路径放在另一个资源页面上,它会在我进入另一个资源页面时立即出错,因为资源名称放在settings/edit之前

Thx应具备以下功能:

get 'settings/edit' => 'settings#edit', :as => :edit_settings
# you can change put to post as you see fit
put 'settings/edit' => 'settings#update'
若您直接在链接中使用
/settings/edit
,那个么在路径前面加上其他资源名应该不会有问题。但是,如果没有前导斜杠,即
settings/edit
,则可能会出现该问题


edit\u settings\u path
不起作用的原因可能是您没有声明命名路由。您必须使用
:作为
选项来定义生成此路径/url的方法。

如果要显式定义路由,请使用以下命令

get 'settings/edit' => 'settings#edit', :as => edit_settings
此语句定义当收到设置/编辑的GET请求时,调用SettingsController#edit方法,并且视图可以使用“编辑设置#路径”引用此链接

花点时间阅读。它比任何其他参考文献更好地解释了路由


请记住
rake routes
任务,该任务列出了应用程序中定义的所有路由的详细信息。

首先告诉我们您尝试了哪些路由谢谢!我真的忘了它前面的那个。但我最终还是使用了您的解决方案:)
get 'settings/edit' => 'settings#edit', :as => :edit_settings
# you can change put to post as you see fit
put 'settings/edit' => 'settings#update'
get 'settings/edit' => 'settings#edit', :as => edit_settings