【问题标题】:What is the best way using multiple lines of <% %> Tag or <% %> Tag with multiple lines?使用多行 <% %> 标记或多行 <% %> 标记的最佳方法是什么?
【发布时间】:2010-05-15 06:11:04
【问题描述】:

对不起,如果标题不足以理解我在问什么。 我是 Rails 开发人员,我在视图中使用了多行 ,但现在我意识到这不是最佳实践,所以我来到这里,向你们所有优秀的人致敬,ROR 中的正确方法是什么?

例如,如果我需要以下内容

 <% user =User.all %>
 <% name= [] %>
 <% count = 0 %>
  <% for user in users %>
    <% name << user.name %>
    <% count+=1%>
  <% end %>

我可以这样做吗?

 <% user =User.all 
    name= [] 
    count = 0
    for user in users 
      name << user.name 
      count+=1
    end 
 %>

我知道从数组中收集元素的更好方法但以上只是示例。 但我的问题是,是否有可能,如果是的话,哪种方法是正确的?

【问题讨论】:

  • 有效吗?如果它有效,并且是一种明智的方法(即它不违反某些架构原则),那么它就是正确的方法,因为它更简单、更易于阅读。

标签: ruby-on-rails ruby views correctness


【解决方案1】:

我认为正确的方法是完全不同的:将逻辑移出视图。

This blog post 解释了我的意思。

【讨论】:

  • 我完全同意。逻辑应该在控制器中,或者如果它与渲染视图有关,它可以在助手中。如果你这样做,视图中几乎不需要多行代码。
  • 这只是一个例子,亲爱的,我知道这不是为视图编写的逻辑,但我只想知道当你必须编写类似上面的内容时应该使用什么。
【解决方案2】:

在开始和结束中必须有'' 喜欢:

<% users = User.all 
    name= [] 
    count = 0
    for user in users 
      count+=1
    end %>

【讨论】:

    【解决方案3】:

    每个代码块只使用一对标签当然是更可取的,因为它会使输出更小。

    代码应该看起来像

    <% names = User.all.map(&:name) %>
    

    注意“count”可以通过names.size获取。

    如果你需要混合

    <% for user in User.all %>
    <%= user.name %></br>
    <% end %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多