Ruby on rails Rails使用循环RESTful路由将_链接到

Ruby on rails Rails使用循环RESTful路由将_链接到,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我希望你能为问答应用回答这个问题。Rails仍然非常新。这应该相当简单,但每当我试图创建一个链接列表来显示从循环到RESTful路由的那个点时,就会遇到一个小问题 以下是控制器的代码: 用户\u controller.rb def list @user = User.find(params[:id]) @users = User.find(:all, :select => :name) end def quiz @user = User.find(params[:id])

我希望你能为问答应用回答这个问题。Rails仍然非常新。这应该相当简单,但每当我试图创建一个链接列表来显示从循环到RESTful路由的那个点时,就会遇到一个小问题

以下是控制器的代码:

用户\u controller.rb

def list
  @user = User.find(params[:id])
  @users = User.find(:all, :select => :name)
end

def quiz
  @user = User.find(params[:id])
  @users = User.find(:all, :select => :name)
end
以下是视图的代码:

<% if current_user.admin? %>
  <ul>
    <%- @users.each do |link| %>
      <li><%= link_to link.name, quiz_user_path(@user, @quiz) %></li>
    <% end %>
  </ul>
<% end %>
我想做的是根据用户名称生成单个链接,然后链接到该特定用户的测验页面。我很确定在我看来,代码需要做一些修改。现在,我得到的是一个指向当前用户的链接,在本例中是用户4。(
http://localhost:3000/users/4/quiz


感谢您提供解决此问题的快速提示。

这是因为在您当前的路线图中,
quick\u user\u path
只需要一个变量。尝试删除
@quick

当前,您正在为每个链接使用相同的@user实例变量。相反,您需要在循环中使用变量集。以下代码应按预期工作:

<% if current_user.admin? %>
  <ul>
    <%- @users.each do |user| %>
      <li><%= link_to user.name, quiz_user_path(user) %></li>
    <% end %>
  </ul>
<% end %>


为了清楚起见,我还将变量从
link
重命名为
user
,因为您迭代的是用户而不是链接。

感谢您的帮助,但这显示了一个错误:“未定义的方法'join'for nil:NilClass”。如果我改用@user,那么我得到的是我之前拥有的链接列表,所有链接都指向当前用户,在本例中是用户4。(). 非常感谢你的帮助!我明白了。将“@users=User.find(:all,:select=>:name)”更改为“@users=User.find(:all)”。取出:select=>:name。瞧!再次感谢,谢谢你。如果我改为使用@user,那么我会得到我之前拥有的链接列表,所有链接都指向当前用户,在本例中是作为管理员的用户4。还有什么想法吗?我想出来了。将“@users=User.find(:all,:select=>:name)”更改为“@users=User.find(:all)。”取出:select=>:name。瞧!再次感谢。按照下面的建议和控制器中的一个小改动来解决这个问题。将“@users=User.find(:all,:select=>:name)”更改为“@users=User.find(:all)”。取出:select=>:name。瞧!再次感谢。
<% if current_user.admin? %>
  <ul>
    <%- @users.each do |user| %>
      <li><%= link_to user.name, quiz_user_path(user) %></li>
    <% end %>
  </ul>
<% end %>