Mex*_*xer 8 controller routes ruby-on-rails
我很难理解路线,希望有人能帮助我.
这是我的自定义控制器
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
Run Code Online (Sandbox Code Playgroud)
我有文件设置/ edit.html.erb和我的链接
<li><%= link_to('Settings', edit_settings_path) %></li>
Run Code Online (Sandbox Code Playgroud)
路线
get "settings/edit"
Run Code Online (Sandbox Code Playgroud)
不起作用,因为我得到了
undefined local variable or method `edit_settings_path' for #<#<Class:0x00000001814ad8>:0x00000002b40a80>
Run Code Online (Sandbox Code Playgroud)
我有什么途径可以给这个?我无法弄清楚.如果我把"/ settings/edit"而不是路径放在一个其他资源页面上就会搞砸,因为资源名称是在设置/编辑之前放置的
谢谢
rub*_*ish 18
以下应该做:
get 'settings/edit' => 'settings#edit', :as => :edit_settings
# you can change put to post as you see fit
put 'settings/edit' => 'settings#update'
Run Code Online (Sandbox Code Playgroud)
如果/settings/edit直接在链接中使用,则不应该在路径中添加其他资源名称.但是,没有前导斜杠,即settings/edit它可能有这个问题.
原因edit_settings_path不起作用可能是因为您没有声明命名路由.您必须使用:as选项来定义生成此路径/ URL的方法.
如果你想明确定义路线,你可以使用类似的东西
get 'settings/edit' => 'settings#edit', :as => edit_settings
Run Code Online (Sandbox Code Playgroud)
该语句定义了当收到设置/编辑的 GET 请求时,调用 SettingsController#edit 方法,并且视图可以使用“edit_settings_path”引用此链接。
花一些时间阅读有关路由的 Rails 指南。它比任何其他参考文献都更好地解释了路由。
还要记住rake routes任务,它列出了应用程序中定义的所有路由的详细信息。
| 归档时间: |
|
| 查看次数: |
16774 次 |
| 最近记录: |