如何删除此分部中的局部变量



我认为在分部中包含局部变量是不好的,但我不知道如何重构:

部分:

<div class="span4">
<% local_revision, latest_svn_revision = get_revision_from current_local_path %>
<ul>
  <li><span class="muted">Local Svn Revision</span>: <b><%= local_revision %></b></li>
  <li><span class="muted">Latest Svn Revision</span>: <b><%= latest_svn_revision %></b></li>
</ul>

助手:

def get_revision_from(local_path)
  working_info = YAML.load `call svn info "#{local_path}"`
  repo_path = working_info['Repository Root']
  repo_info = YAML.load `call svn info "#{repo_path}"`
  return working_info['Revision'], repo_info['Revision']
end

这个方法get_revision_from返回两个结果,如何在不使用局部变量的情况下在分部中使用这两个结果?

这个分部在页眉中使用,所以我想在每一页中都使用它。如果它们在每一页中都使用,我应该把这两个变量放在哪个控制器上?

如果您想从分部中获取变量,可以将值作为参数传入。您可以按照Rails指南中的描述进行操作:

<h1>New zone</h1>
<%= error_messages_for :zone %>
<%= render partial: "form", locals: {zone: @zone} %>

在该示例中,@zone的值将作为zone在部分代码内部可用。

将helper方法移动到ApplicationController中,并对其进行重构,使其不带参数(在方法本身的current_local_path中读取),并使其实例化实例变量。然后使其成为应用程序控制器上的before_filter

before_filter :get_revision
def get_revision
  # ...
  @local_revision = working_info['Revision']
  @latest_svn_revision = repo_info['Revision']
end

然后在布局文件中只需使用@local_revision@latest_svn_revision

最新更新