0

我希望你能回答一个问答应用程序的问题。Rails 还是很新的。它应该相当简单,但是每当我尝试创建链接列表以显示该点到循环中的 RESTful 路由时,都会遇到一个小问题。

这是控制器的代码:

users_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 %>

这是路线的代码:

resources :users do 
  get 'quiz', :on => :member
end

我想要做的是根据用户名生成单独的链接,然后链接到该特定用户的测验页面。在我看来,我很确定需要为代码更改某些内容。现在,我得到的只是一个指向当前用户的链接,在这种情况下是用户 4。(http://localhost:3000/users/4/quiz

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

4

2 回答 2

0

Currently you are using the same @user instance variable for each link. Instead you need to use the variable set in your loop. The code below should work as expected:

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

I also renamed the variable from link to user, for clarity, since your iterating through users not links.

于 2012-08-27T11:47:42.520 回答
0

这是因为在您当前的路线图中quiz_user_path只需要一个变量。尝试删除@quiz.

于 2012-08-27T04:08:30.203 回答