首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby on rails:渲染2个部分或找出类和对象的类型

Ruby on rails:渲染2个部分或找出类和对象的类型
EN

Stack Overflow用户
提问于 2009-09-03 00:40:12
回答 3查看 601关注 0票数 1

我想在同一个叫做控制器函数的ajax中显示不同类型的对象。当我发回一个ajax调用时,我想要渲染出来。问题是我想要一个对象的"title“属性和另一个对象的"name”属性。我不能渲染两个部分,而且似乎可以弄清楚如何检查对象的类型。我该如何解决这个问题?

这是我当前的控制器设置(不正确)

代码语言:javascript
复制
@objects =  Obj.find(:all,:conditions => ["name Like ?", "#{prefix}%"])
@moreObjects = ObjTwo.find(:all,:conditions => ["title Like ?","#{prefix}%"])

if @objects.empty?
  render :text => "No Matches"
else
  render :partial => 'one', :collection => @objects
end

if  @moreObjects.empty?
  render :text => "No Matches"
else
  render :partial => 'two', :collection => @moreObjects
end
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-03 00:49:12

试试像这样的东西

代码语言:javascript
复制
<%= obj.title if obj.respond_to?(:title) %>
票数 1
EN

Stack Overflow用户

发布于 2009-09-03 00:55:21

这里有一个不需要检查类型的选项--在你的Obj和ObjTwo类中添加一个新方法:

代码语言:javascript
复制
def fancy_pants
  title
end

def fancy_pants
  name
end

然后你可以组合@objects@moreObjects -你只需要一条if语句和一条partial语句。

代码语言:javascript
复制
@search_domination = @objects + @moreObjects

if @search_domination.empty?
  render :text => "No Matches"
else
  render :partial => 'one', :collection => @search_domination
end
票数 1
EN

Stack Overflow用户

发布于 2009-09-03 00:50:02

您可以使用Object.is_a?,但这不是一个非常干净的解决方案。您还可以尝试在表示之前映射数据,以帮助保持视图的轻量级。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1370899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档