私は(このフォーラムを通じて)太陽黒点を持つ複数のモデルを検索することに成功しました。今、私は意図した方法で結果を表示する方法に固執しています。
これが私のコントローラーにあるものです
@search = Sunspot.search [Gear, User] do
fulltext params[:search]
paginate(page: params[:page])
end
@gears = @search.results
したがって、Userモデルを追加する前に、次のように各Gearオブジェクトを繰り返し処理します。
<% @gears.each do |gear| %>
<%= link_to gear_path(gear) do %>
<div class="gear_list_box">
<div class="gear_list_box_top"><%= image_tag gear.image_url(:list), class: 'gear_list_box_top_pic' %></div>
<div class="gear_list_box_bottom">
<table style="border-collapse:collapse; cellspacing: 0; width: 100%; margin: 0;" >
<tr>
<td style="color: #2c6aa7; padding-left: 10px" width="60%"> <span class='gearlist_size'><%= gear.size %></span> - <%= truncate(gear.title,:length => 12) %></td>
<td rowspan="2" width="40%" style="color: #5c8d0d; text-align: center; vertical-align: middle; font-size: 120%; border-collapse:collapse;">$<%= gear.price %>/day</td>
</tr>
<tr>
<td width="60%" style="padding-left: 10px; font-size: 12px;"><%= gear.user.first_name + " " + gear.user.last_name%></td>
</tr>
</table>
</div>
</div>
<% end %>
<% end %>
これで、次のようなエラーが発生します。
NoMethodError in Gears#index
Showing /Users/dave/rails_projects/outdoor/app/views/gears/_gear.html.erb where line #3 raised:
undefined method `image_url' for #<User:0x007fd6654cae08>
Userオブジェクトには明らかにGearオブジェクトと同じ列がないためです。これを正しく表示し、ユーザー名で検索するにはどうすればよいですか?
モデルはGear:belongs_to User:has_manyです。
ありがとうございました。