1

私はレールに非常に慣れておらず、最初のアプリをまとめています。我慢してください!

ユーザーがプレイしているビデオゲームを評価できるアプリを作成しています。このサイトでは、ユーザーが過去に評価したすべてのゲームのリストを表示できるページを作成しました。

私はいくつかの問題に直面していて、それはかなり単純だと思いますが、それは私を夢中にさせています。

私が持っているコントローラーには:

def index
  @rate = Rate.where(:rater_id => current_user.id)

  @ratename = Game.where(:id => @rate.first.rateable_id)

  end

そして私の見解では:

  <% @rates.order("created_at desc").each do |rates| %>

      You are playing <%= @ratename.name %></div>

  <% end %>

私が混乱しているのは、ブラウザに「あなたはゲームをプレイしています」と表示されていることです。

「ゲーム」だけでなく、ゲームの名前を表示するにはどうすればよいですか?

UPATE:

レートのモデル:

class Rate < ActiveRecord::Base
  attr_accessible :rateable_id, :rater_id

  belongs_to :user
  belongs_to :game

end
4

3 に答える 3

2
@ratename = Game.where(:id => @rate.first.rateable_id)

名前だけでなく、すべての属性を持つ Game を検索することを意味します。

正しい方法:

コントローラーで:

@rates = current_user.rates.order("created_at desc") #will work if you made correct associations (user has many rates)

ビューで:

<% @rates each do |rate| %>   
  You are playing <%= rate.game.name %></div>
<% end %>

rate.game.name は、正しい関連付けを行った場合に機能します: ゲームには多くのレートがあり、レートはゲームに属します。

于 2012-09-29T07:29:20.787 に答える
1

私の提案はこれを行うだけです

インデックスで

def index
   @rates = current_user.rates.includes(:game).order("created_at desc")
end


in view

     <% @rates.each do |rate| %>

      You are playing <%= rate.game.name %></div>

  <% end %>

これにより問題が解決し、サーバーの効率が向上します

于 2012-09-29T09:56:07.947 に答える
1

関連を直接参照してみてください。

コントローラ:

def index
  @rates = current_user.rates.order("created_at desc")
end

意見:

<% @rates.each do |rate| %>
  You are playing <%= rate.game.name %>
<% end %>
于 2012-09-29T06:54:08.167 に答える