将逻辑放在视图或帮助器中 - Rails

时间:2015-01-15 14:43:07

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 code-cleanup

我在将代码放入视图或将其放入帮助程序之间绘制线条时遇到了一些困难。

例如,这是我放在视图中的代码:

<div id="top-columns">
  <!-- large-3 columns -->
  <% if @show_interest_group %>
  <% rows_for_groups(@interest_groups).each do |groups| %>
    <div class="row">
      <% groups.each do |group| %>
        <div class="<%= css_class_for_groups(groups)%> interestgroupBlock">
          <article>
            <%= link_to '', jobs_path(:category => group.sap_id), :class => "plusSign"%>
            <h3 class="headingMedium">
              <%= group.title %>
            </h3>
            <figure>
              <%= image_tag group.image_url, :alt => group.alt %>
            </figure>
            <p class=""><%= group.body %></p>
            <p class="more"><%= link_to t("home.jobs.view_link"), jobs_path(:category => group.sap_id)%></p>
          </article>
      </div>
  <% end %>
  </div>





  <% if @questionnaires.present? %>
  <%= render_numbered_header(ApplyField.surveys_title) %>
            <div class="collapsable">
  <fieldset>
  <div class="large-12 columns">
    <% @questionnaires.each_with_index do |questionnaire,i| %>

      <h3> <strong><%= questionnaire["QUESTIONNAIRE_NAME"] %></strong></h3>
      <p><%= questionnaire["QUESTIONNAIRE_DESCRIPTION"] %></p>
      <% questionnaire["QUESTIONS"].collect{|q| q["QUESTION"]}.each do |question| %>

      <%= render_question(question, {"data-template_id" =>questionnaire["QUESTIONNAIRE_TEMPLATE_ID"]}, params[:surveys]) %>
      <% end %>
    <% end %></div></div></fieldset>
  <% end -%>
  <% end %>

因此,对于干净的编程,我是否有重构此代码并将其放在帮助器中,或者我可以编写这样的代码。

1 个答案:

答案 0 :(得分:0)

您可以在视图中使用此类代码,但您不希望使用保持干净

的代码。

你绝对可以把一段代码放在一个帮助器中(文件名应该是_make_table.html.erb在同一个目录中或不同的(以_开头))

并且可以将该行放在主窗体中

<%= render :partial => "make_table", :locals => {:user => user}%>