使用参数链接到命名路由

时间:2014-10-11 14:21:43

标签: ruby-on-rails

我正在尝试使用“链接到”按ID显示用户 在我的users_controller.rb我有一个方法显示如下所示:

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

我对此控制器方法的路线是:

get 'users/:id/show' => 'users#show', as: :show

指令的链接是:

<%= link_to 'show it', show_path(id: user.id)  %>

生成的错误是:

  

未定义的局部变量或方法`user'

我也尝试过这种语法:

<%= link_to 'show it', show_path(@user.id)  %>

但我也有这个错误:

  

nil的未定义方法`id':NilClass

但是当我尝试这个时:<%= link_to 'show it', show_path(1) %>

它工作正常 我使用的是rails 4,我真的不知道问题出在哪里

1 个答案:

答案 0 :(得分:1)

你在哪里

<%= link_to 'show it', show_path(@user.id)  %>

我的意思是,它应该在用户控制器和index.html.erb中,由index action调用。如果是这样,您没有设置@user变量。例如,您可以在控制器集中使用:

@users = User.all

然后在你的模板中:

<% @users.each do |user| %>
    <%= link_to 'show it', show_path(user.id)  %>
<% end %>