显示来自Rails中Sunspot的搜索结果

时间:2012-05-08 13:12:09

标签: ruby-on-rails view sunspot

我已经管理(通过此forumn)来搜索具有太阳黑子的多个模型。现在我一直坚持如何以预期的方式显示结果。

这是我的控制器中的内容

@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用户:has_many

谢谢。

1 个答案:

答案 0 :(得分:1)

我最好做这样的事情:

@search = Gear.solr_search do
        fulltext params[:search]
        paginate(page: params[:page])
end

@gears = @search.results

并在Gear模型中:

searchable do
    ...
    text :user_name do
      user.name
    end
end