Ruby on rails 其中';这是RubyonRails中文本查找的正确位置
按照“Rails方式”,在如下视图中输出文本的正确/公认/最佳实践方法是什么: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. <%
<!-- 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 %>