2013-06-19 36 views

回答

1

你可以在一行中寫:

(@edits.where(:article_id => a.id).first || a).body.html_safe 
+0

上帝完美。謝謝。 –

+0

這隻適用於存在'@ edits'的情況嗎?如果他們不呢? –

+0

@emm然後附帶'a' – xdazz

2

您可以在if聲明中進行分配。

if edit = @edits.where(:article_id => a.id).first 
    edit.body.html_safe 
else 
    a.body.html_safe 
end 
1

考慮把這樣的邏輯或助手是非常難看。判斷這些不是View的工作。

更好的選擇:

# Article model 
def default_edit 
    edits.first 
end 

# Articles Controller 
def show 
    article = Article.find(params[:article]) 
    @article = article.default_edit || article 
end 

# view: no need to do anything, just plain obj 
<%= @article.body %> 
0

您可以使用find_byfind_by_*避免討厭.where().first

if edit = Edit.find_by(article_id: article.id) 
    edit.body.html_safe 
else 
    article.body.html_safe 
end