Ruby on rails 我应该把显示逻辑(而不是控制器)放在哪里?
我需要根据注释的数量显示不同的文本,并且我已经在控制器中放置了逻辑。但是在控制器中有一个长的方法似乎不是很枯燥,我应该把它放在哪里呢 示例_controller.rb:Ruby on rails 我应该把显示逻辑(而不是控制器)放在哪里?,ruby-on-rails,model-view-controller,switch-statement,case,helper,Ruby On Rails,Model View Controller,Switch Statement,Case,Helper,我需要根据注释的数量显示不同的文本,并且我已经在控制器中放置了逻辑。但是在控制器中有一个长的方法似乎不是很枯燥,我应该把它放在哪里呢 示例_controller.rb: def index . count_dependent_message . end def count_dependent_message case @user.comment.count when 0 @strong = "example Strong 0"
def index
.
count_dependent_message
.
end
def count_dependent_message
case @user.comment.count
when 0
@strong = "example Strong 0"
@paragraph = "example paragraph 0"
when 1
@strong = "Jon Smith is called Smith"
@paragraph = "example paragraph 1"
when 2...10
@strong = "Once upon a time...Steve Jobs... "
@paragraph = "example paragraph 2"
when 11...40
@strong = "Wow you have many counts"
@paragraph = "example paragraph 3"
else
@strong = "exciting"
@paragraph = "example paragraph 4"
end
end
视图:
我曾考虑过将逻辑放在分部中,但这似乎不是很有效,因为我要呈现的文本只是一个句子。将视图代码移动到分部 eg_heading.html.erb
<h3>
<strong><%= texts[:heading] %></strong>
</h3>
<p><%= texts[:text] %></p>
这样你就可以打电话了
<%= render 'heading', :locals => { :texts => count_dependent_message(@user.comment.count) } %>
{:text=>count\u dependent\u message(@user.comment.count)}%>
您可以将翻译方法添加到视图辅助对象中
def strong(comment_count)
case ...
end
然后,您的视图将如下所示:
<%= strong(@comment_count) %>
@comment_count = @user.comments.count
这很好,因为控制器没有任何显示逻辑,而且视图也很短。
谢谢你,菲奥娜!这不仅提供了我想要的答案,而且你还向我展示了如何使用助手!现在看起来好多了!非常感谢。享受你的生活!嗨,安德烈,谢谢你的回答。这似乎是一个好方法,但我还不习惯于符号。但你的回答清楚地告诉了我如何使用它们。非常感谢。<%= strong(@comment_count) %>
@comment_count = @user.comments.count