加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails:路由到自定义控制器操作

发布时间:2020-12-17 04:33:32 所属栏目:百科 来源:网络整理
导读:我很难理解路线,希望有人能帮助我. 这是我的自定义控制器 class SettingsController ApplicationController before_filter :authenticate_user! def edit @user = current_user end def update @user = User.find(current_user.id) if @user.update_attribut
我很难理解路线,希望有人能帮助我.

这是我的自定义控制器

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

我有文件设置/ edit.html.erb和我的链接

<li><%= link_to('Settings',edit_settings_path) %></li>

路线

get "settings/edit"

不起作用,因为我得到了

undefined local variable or method `edit_settings_path' for #<#<Class:0x00000001814ad8>:0x00000002b40a80>

我有什么途径可以给这个?我无法弄明白.如果我把“/ settings / edit”而不是路径,只要我在其他资源页面上就会搞砸,因为资源名称是在设置/编辑之前放置的

谢谢

解决方法

以下应该做:
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,则不应该在路径中添加其他资源名称.但是,没有前导斜杠,即设置/编辑它可能会有这个问题.

edit_settings_path不起作用的原因可能是因为您没有声明命名路由.您必须使用:作为选项来定义您将通过哪种方法生成此路径/ URL.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读