我正在使用两个控制器事件和incident_list,我在events_list / index页面中显示所有事件,当我在每个事件中单击show button时我想显示该事件详细信息
IncidentListController
def show
@incidents = Incident.all
@incident = Incident.find(params[:id])
render "incidents/show"
end
IncidentController
def show
@incidents = Incident.all
@incident = Incident.find(params[:id])
end
incidnet_lists / index.html.erb
<table>
<table class="table table-striped table-bordered">
<thead >
<tr>
<th class="c2">Case ID</th>
<th class="c2">Call Type</th>
<th class="c2">Number of People</th>
<th class="c2"></th>
</tr>
</thead>
<tbody>
<tr>
<td><%= inc.id %> </td>
<td><%= inc.call_type %> </td>
<td><%= inc.no_of_people %></td>
<td><%= link_to 'Show', @incidents %></td>
</tr>
</tbody>
</table>
事件/ show.html.erb
<table class="table table-striped table-bordered">
<thead>
<tr>
<td class= "c2" > Case Id </td>
<td class= "c2"> Caller Name </td>
<td class="c2"> Contact Number </td>
<td class= "c2"> Calling For </td>
<td class="c2"> Call Type </td>
<tr>
</thead>
<tbody>
<% @incidents.each do |inc| %>
<tr>
<td> <%= inc.id %> </td>
<td> <%= inc.caller_name %></td>
<td> <%= inc.contact_number %></td>
<td> <%= inc.for_whom %> </td>
<td> <%= inc.call_type %> </td>
</tr>
<% end %>
</tbody>
</table>
当点击events_list页面中的show按钮时,应该显示事件显示页面
答案 0 :(得分:1)
REST方法完全涵盖了您的情况。
根据该方法,您应该拥有单个IncidentsController
控制器。那你应该
show
操作会将show.html.erb
视图中的特定事件公开为@incident
实例变量index
操作会将所有(或某些)事件的列表公开为index.html.erb
视图@incidents
实例变量。 所以你不需要也不应该从另一个控制器的动作中调用一些控制器的动作。
这是“Rails方式”,它是“REST方式”。这就是人们应该如何做到的。
您遇到的最简单的提示是为事件资源生成rails scaffold,并正确使用生成的文件进行设置。
rails generate scaffold Incident