Ruby on rails 其中';这是RubyonRails中文本查找的正确位置

Ruby on rails 其中';这是RubyonRails中文本查找的正确位置,ruby-on-rails,erb,Ruby On Rails,Erb,按照“Rails方式”,在如下视图中输出文本的正确/公认/最佳实践方法是什么: <!-- show.html.erb --> <% if @post.status == "PUBLISHED" %> Big long text about being published. <% elsif @post.status == "DRAFT" %> Big long text about under being a draft post. <%

按照“Rails方式”,在如下视图中输出文本的正确/公认/最佳实践方法是什么:

<!-- show.html.erb -->

<% if @post.status == "PUBLISHED" %>
   Big long text about being published.
<% elsif @post.status == "DRAFT" %>
   Big long text about under being a draft post.
<% elsif @post.status == "UNDER_REVIEW" %>
   Big long text about being under review.
<% end %>

关于被出版的长篇大论。
大长文本下是一个草案的职位。
关于被审查的长篇大论。

这应该委托给一个方法吗?如果是这样,该在哪里定义该方法呢?

好吧,我不知道MCV,但用ruby术语来说:

<% case @post.status %>
    <% when "PUBLISHED" %>
        Big long text about being published.
    <% when "DRAFT" %>
        Big long text about under being a draft post.
    <% when "UNDER_REVIEW" %>
        Big long text about being under review.
<% end %>

我不知道MCV,但用ruby的话来说:

<% case @post.status %>
    <% when "PUBLISHED" %>
        Big long text about being published.
    <% when "DRAFT" %>
        Big long text about under being a draft post.
    <% when "UNDER_REVIEW" %>
        Big long text about being under review.
<% end %>

如果你只是从MVC的角度来思考,名义上就是视图。除非文本是数据模型固有的(我可能理解),否则这就是视图逻辑


也就是说,为了回答您关于委托给某个方法的问题,我认为应该是这样的,而且合适的地方应该是在一个装饰师那里。仅针对视图的这种类型的面向对象逻辑。你可以试着看看那里。

名义上的视图,如果你只是从MVC的角度考虑的话。除非文本是数据模型固有的(我可能理解),否则这就是视图逻辑


也就是说,为了回答您关于委托给某个方法的问题,我认为应该是这样的,而且合适的地方应该是在一个装饰师那里。仅针对视图的这种类型的面向对象逻辑。你可以试着看看那里。

我通常喜欢将这种逻辑提取到装饰器(via)或单独的类中

室内装修设计师 您可以将其用作

@text = PostText.new(@post)
text = @text.decorated_text
在这两种情况下,您的视图都应该是干净的

<!-- show.html.erb -->

<%= @decorated_post.decorated_text %>


注:
有时,为每个状态提供额外的模板已经被证明是有用的,但只有当发生更改的部分中包含某种html或它非常大时才有用。

我通常喜欢将这种逻辑提取到装饰器(via)或单独的类中

室内装修设计师 您可以将其用作

@text = PostText.new(@post)
text = @text.decorated_text
在这两种情况下,您的视图都应该是干净的

<!-- show.html.erb -->

<%= @decorated_post.decorated_text %>


注:
有时,为每个状态提供额外的模板已经被证明是有用的,但只有当更改的部分中包含某种html或它非常大时才有用。

将此移到helper将清理您的html文件。除了我的回答之外,我想提一提,基于您类似FSM的状态,您可能应该使用一些工作流gem(例如
gem'workflow'
)为您的逻辑准备好方法和编程转换。@RubyRacer,谢谢,但这只是我在编写问题时编写的一个示例代码示例。将此移到helper将清理您的html文件。除了我的答案,基于您类似FSM的状态,我想提醒您,您可能应该使用一些工作流gem(例如
gem'workflow'
),为您的逻辑准备好方法和编程转换。@RubyRacer,谢谢,但这只是我在写问题时编制的示例代码示例。+1,我本想亲自提出一些建议,但你抢先了我一步。通常与视图相关的逻辑要么进入视图助手,要么进入视图装饰器(draper gem),但由于我们在这里处理的是“大长文本”,我认为分区是一个不错的选择。通常与视图相关的逻辑要么进入视图辅助程序,要么进入视图装饰程序(draper gem),但由于我们在这里处理的是“大长文本”,我认为部分是一种方法。
<!-- show.html.erb -->

<%= @text.decorated_text %>