user_path(user)undefined局部变量或方法`user'

时间:2013-04-08 09:49:12

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

我正在尝试为我的应用的用户添加个人资料页面。

我关注了railscast 250& 274设置我的用户身份验证&添加以下内容以获取用户个人资料。

用户/ show.html.erb

<div class="page-header">
  <h1><%= @user.name %> Profile</h1>
</div>

<p>
  <b>email:</b>
  <%= @user.email %>
</p>

布局/ _navbar.html.erb

<%= link_to "View your Profile", user_path(user) %>

users_controller.rb

  def show
    @user = User.find(params[:id])
  end

这会引发undefined local variable or method 'user'错误。

所以我尝试将这两行添加到 application_controller.rb

@user = User.all

&安培;

@user = User.all.find(params[:id])

但是这些分别返回了以下错误

undefined local variable or method `user'

&安培;

undefined local variable or method `params'

我的 routes.rb 文件中有resources :users个文件&amp;我也尝试添加get 'users/:id', :to => 'users#show', :as => 'user'但没有任何成功。

2 个答案:

答案 0 :(得分:2)

转到当前登录用户的显示页面:

<%= link_to "View your Profile", current_user %>

保持show动作不变,路线只保留resources :users

答案 1 :(得分:1)

我认为问题出在您的 layouts / _navbar 文件中。您需要定义user

使用帮助者:<%= link_to "View your Profile", user_path(current_user) %>

或者:<%= link_to "View your Profile", url_for({ :controller => 'users', :action => 'show', :id => current_person.id }) %>