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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 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

我有文件设置/ 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.

原文链接:https://www.f2er.com/ruby/269313.html

猜你在找的Ruby相关文章