如何在“索引”页面和“显示”页面

时间:2017-06-02 01:33:19

标签: ruby-on-rails partial

模型Company有许多DailyDatum

我想在companies/:id/daily_datadaily_data/index中显示每日数据。但在公司页面中,我不想显示company.name列。

视图/ daily_data / _daily_datum.html.erb

<tr>
  <td><%= daily_datum.company.name %></td>
  # This company.name needs to be shown when the partial is called from daily data index.
  <td><%= daily_datum.column1 %></td>
  <td><%= daily_datum.column2 %></td>
</tr>

视图/ daily_data / index.html.erb

<table>
  <thead>
  <tr>
    <th>Company Name</th>
    <th>Daily Datum1</th>
    <th>Daily Datum2</th>
  </tr>
  </thead>
  <%= render @daily_data %>
</table>

视图/公司/ daily_data.html.erb

<table>
  <thead>
  <tr>
    <!--<th>Company Name</th>-->
    <th>Daily Datum1</th>
    <th>Daily Datum2</th>
  </tr>
  </thead>
  <%= render @daily_data %>
</table>

我应该如何处理这样的情况?我是否需要创建另一个部分HTML?

2 个答案:

答案 0 :(得分:5)

这可能有点矫枉过正,因为你只是试图有条件地渲染一个字段,但“正确”的方法是创建一个帮助。

我建议创建一个帮助器,根据@daily_data有条件地呈现path的两个部分之一。

companies_helper.rb

def is_companies_index_path?
  current_page?(companies_index_url)
end

def is_companies_show_path?
  current_page?(companies_show_url)
end

def render_appropriate_partial
  render 'daily_data_a' if is_companies_index_path?
  render 'daily_data_b' if is_companies_show_path?
end

然后在您的观看中,您只需致电:

<% render_appropriate_partial %>

它将根据您的路线/网址呈现适当的部分。

答案 1 :(得分:0)

您可以使用Routing Paramters了解当前操作/控制器的内容,因此使用if条件可以添加公司名称。

<% if action_name == 'index' && controller_name == 'daily_data' %>
  <th>Company Name</th>
<% end %>