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