如何让我的用户(用户模型)显示页面显示他们提供的服务(另一个模型)的列表,以及人们可以为其服务预订约会(另一个模型)的表单? / p>
看起来我需要在控制器中使@services变量更灵活。但我不知道怎么做。似乎我渲染的只有一个部分能够在我的控制器中使用它。怪异!
USERS CONTROLLER
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@appointment = Appointment.new
@services = @user.services.collect {|service| [ service.id, service.title, service.description, service.length, service.user_id] }
end
end
USERS / SHOW.HTML.ERB: 服务列表部分:&lt;%render&#39; shared / services_list&#39; %GT;
<table>
<thead>
<tr>
<th>Start time</th>
<th>End time</th>
<th>Note</th>
<th>Service</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @appointments.each do |appointment| %>
<tr>
<td><%= appointment.start_time %></td>
<td><%= appointment.end_time %></td>
<td><%= appointment.note %></td>
<td><%= appointment.service.title %></td>
<td><%= link_to 'Show', appointment %></td>
<td><%= link_to 'Edit', edit_appointment_path(appointment) %></td>
<td><%= link_to 'Destroy', appointment, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
USERS / SHOW.HTML.ERB: AppOINTMENTS FORM PARTIAL:&lt;%= render&#39;约会/表格&#39; %GT;
<table>
<thead>
<tr>
<th>Title</th>
<th>Description</th>
<th>Length</th>
<th>User</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @services.each do |service| %>
<tr>
<td><%= service.title %></td>
<td><%= service.description %></td>
<td><%= service.length %></td>
<td><%= service.user.email %></td>
<td><%= link_to 'Show', service %></td>
<td><%= link_to 'Edit', edit_service_path(service) %></td>
<td><%= link_to 'Destroy', service, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
错误: 用户#show中的NoMethodError 未定义的方法`title&#39; for [1,&#34; exmaple title&#34;,&#34; example description&#34;,90,1]:Array
第15行突出显示 - &gt; &lt;%= service.title%&gt;
<tbody>
<% @services.each do |service| %>
<tr>
<td><%= service.title %></td>
<td><%= service.description %></td>
<td><%= service.length %></td>
<td><%= service.user.email %></td>
谢谢!
答案 0 :(得分:1)
好。 @peshkira是对的。我需要调用该对象。
所以我将这一行添加到我的控制器@services_list = @user.services.collect
中,这样我就可以按照&#39;索引的风格创建一个列表。
我的完整控制器看起来像这样。
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@appointment = Appointment.new
@services = @user.services.collect {|service| [ service.title, service.id] }
@services_list = @user.services.collect
end
end
这将为嵌套表单(服务和该服务的约会)提供功能,并提取服务列表的数据。