模型Company
有许多DailyDatum
。
我想在companies/:id/daily_data
和daily_data/index
中显示每日数据。但在公司页面中,我不想显示company.name
列。
<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>
<table>
<thead>
<tr>
<th>Company Name</th>
<th>Daily Datum1</th>
<th>Daily Datum2</th>
</tr>
</thead>
<%= render @daily_data %>
</table>
<table>
<thead>
<tr>
<!--<th>Company Name</th>-->
<th>Daily Datum1</th>
<th>Daily Datum2</th>
</tr>
</thead>
<%= render @daily_data %>
</table>
我应该如何处理这样的情况?我是否需要创建另一个部分HTML?
答案 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 %>