我在我的rails应用程序中使用Sphinx搜索几个不同的模型,并成功返回加权结果(包括几种不同类型的对象,比如帖子和用户)。我目前正在使用(many.each { |one| one.inspect }
)对此进行测试,并且工作正常。
我现在正在尝试为每个具有相同名称的模型编写一个方法,该方法将以我选择的格式输出我的对象。例如,我想放置one.inspect
而不是one.print_pretty
,并输出html,它整齐地打印出特定于该类型对象的信息。使用用户示例,我希望它输出如下内容:
<div class="small-2 columns">
<%= image_tag(one.userpic.avatar.url) %>
</div>
<div class="small-10 columns">
<div class="row">
<h3 class="subheader"><%= one.first + " " + one.last %></h3>
</div>
<div class="row">
<%= one.tagline %>
</div>
</div>
相比之下,在我的帖子模型中,它应该输出适用于帖子属性和优先级的不同内容。
如何为Rails模型编写一个方法,该模型将输出一个html风格的块来代码或以其他方式设置未知对象类型的输出(来自有限的池)?
答案 0 :(得分:0)
这样的事情对你有用吗?您可以创建一个单独的部分,为每个对象类显示不同的输出。在您的视图中,将对象传递给辅助方法函数。例如:
<%= render_partial_for_this_type_of_object(your_object) %>
然后在辅助方法中,有类似的东西:
def render_partial_for_this_type_of_object(object)
if object.class.name == "ClassA"
render 'class_a_partial', :object => object
elsif object.class.name == "ClassB"
render 'class_b_partial', :object => object
end
end
总而言之,您将对象从视图传递给帮助程序,确定它是什么类对象,然后根据其将在视图中呈现的类将该对象传递给适当的部分。
我确信还有其他方法可以做到这一点,但这对我来说非常适合我刚建立的应用程序。