Rails路由错误:NoMethodError

时间:2013-12-02 16:41:40

标签: ruby-on-rails ruby-on-rails-3

我是Rails的新手,我正在尝试创建一个主要是我的用户#show页面的副本,内容和格式略有不同。理想情况下,这将是这样的:

正常路线:http://myUrl.com/users/2 新路线:http://myUrl.com/users/2/lightbox< -t这是带格式的新路线。它应该可以访问用户#2的信息。

我对堆栈溢出做了一些研究,并将以下内容添加到routes.rb

    resources :users do
      member do
       get 'lightbox'
      end
    end

然后收拾路线。这允许我输入网址http://myUrl.com/users/2/lightbox。但是,它似乎无法访问任何用户类的资源,并且似乎不知道User#2是谁。

我可能完全以错误的方式解决这个问题 - 我真正想做的就是创建一个自定义页面来显示与显示页面不同的个人用户信息。我真的很感激任何帮助!

1 个答案:

答案 0 :(得分:1)

您需要向app/controllers/users_controller.rb添加操作:

  def lightbox
    @user = User.find(params[:id]
    # any other logic, look at your show method
  end

路由仅将网址映射到控制器操作。控制器操作由每个控制器操作决定,以设置变量并渲染视图。

在使用过滤器和辅助方法之前,请确保您不必多次编写代码。例如:

before_filter :find_user, only: [ :show, :lightbox ]

def show
end

def lightbox
end

protected

def find_user
  @user = User.find(params.fetch :id)
end