Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我应该把显示逻辑(而不是控制器)放在哪里?_Ruby On Rails_Model View Controller_Switch Statement_Case_Helper - Fatal编程技术网

Ruby on rails 我应该把显示逻辑(而不是控制器)放在哪里?

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"

我需要根据注释的数量显示不同的文本,并且我已经在控制器中放置了逻辑。但是在控制器中有一个长的方法似乎不是很枯燥,我应该把它放在哪里呢

示例_controller.rb:

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