0

Q&Aアプリでお答えいただければ幸いです。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

これは、現在のルートマップでquiz_user_path必要な変数が1つだけだからです。を削除してみてください@quiz

于 2012-08-27T04:08:30.203 に答える
0

現在、各リンクに同じ@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

于 2012-08-27T11:47:42.520 に答える