首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重构Rails视图

重构Rails视图
EN

Stack Overflow用户
提问于 2011-06-07 09:11:32
回答 2查看 210关注 0票数 0

我是Rails开发的新手,所以请耐心等待。我正在创建一个视图,它上面有几个看起来非常相似的字段。它只是在恳求以某种方式进行重构,但我一直无法弄清楚。请参见下面的代码示例:

代码语言:javascript
复制
<%= form_for(@tapelog) do |f| %>
  <div class="container">
    <div class="field span-16">
      <div class="span-8 labelRight">
        <%= f.label :client %>
      </div>
      <div class="span-8 last">
        <%= f.collection_select :client_id, Client.find(:all), :id, :name,
                                { :prompt => "Select a Client..." },
                                { :class => "automatixSelect" } %>
      </div>
    </div>
    <div class="field span-16">
      <div class="span-8 labelRight">
        <%= f.label :employer %>
      </div>
      <div class="span-8 last">
        <%= f.collection_select :employer_id, Employer.find(:all), :id, :name,
                                { :prompt => "Select an Employer..." },
                                { :class  => "automatixSelect" } %>
      </div>
    </div>
  ....
<% end %>

大约有7个这样的字段。我试着把它们都放到分词中,这样我就可以减少这个页面上的杂乱,但因为没有定义'f‘,所以出现了错误。有什么建议可以让我在这里减少一些杂乱吗?任何其他关于Ruby重构的一般技巧也将受到欢迎。

谢谢-- A。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-07 09:15:14

如果要在后续的分音中使用'f‘,请将其作为参数传递

代码语言:javascript
复制
<%= render :partial => :some_partial, :locals => { :f => f } %>
票数 3
EN

Stack Overflow用户

发布于 2011-06-07 10:30:57

为了清楚起见,我要做的第一件事是将"f“局部变量重命名为"form”。然后,将代码提取为部分代码是合理的:

代码语言:javascript
复制
<div class="field span-16">
  <div class="span-8 labelRight">
    <%= form.label :employer %>
  </div>
  <div class="span-8 last">
    <%= form.collection_select :employer_id, Employer.find(:all), :id, :name,
                               { :prompt => "Select an Employer..." },
                               { :class  => "automatixSelect" } %>
  </div>
</div>

在我看来,这是一个belongs_to关系,所以我可能会创建一个名为"belongs_to“的部分关系,并将其呈现为:

代码语言:javascript
复制
<%= render :belongs_to, :parent => :employer, :form => form %>

我们的想法是,我们将有一个名为"parent“的本地变量,我们可以在partial中修改它。请注意,我使用了简写的部分语法。等同于:

代码语言:javascript
复制
<%= render :partial => :belongs_to, :locals => { :parent => :employer, :form => form } %>

<div class="field span-16">
  <div class="span-8 labelRight">
    <%= form.label parent %>
  </div>
  <div class="span-8 last">
    <%= form.collection_select :"#{parent}_id", parent.to_s.capitalize.constantize.find(:all), :id, :name,
                               { :prompt => "Select an #{parent.to_s.capitalize}..." },
                               { :class  => "automatixSelect" } %>
  </div>
</div>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6259716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档