如何仅列出特定用户在表单中创建的资源?

时间:2014-08-12 16:41:05

标签: ruby-on-rails forms

我有预订应用。有用户模型,服务模型和约会模型。

有许多用户可以创建许多服务。服务可以有很多约会。

我使用User#show页面与特定用户进行预订。在表单中有一个列出可用服务的选择框。然后,您可以为自己选择的服务添加时间。

我如何仅显示该特定用户的服务,即我所在页面的用户?

目前,它将列出所有用户创建的所有服务。

USERS CONTROLLER

class UsersController < ApplicationController

  before_action :load_services, only: [:show]

  def show
    @user = User.find(params[:id])
    @appointment = Appointment.new
  end

  private

    def load_services
      @services = Service.all.collect {|service| [ service.title, service.id] }
    end

end

1 个答案:

答案 0 :(得分:1)

  

有许多用户可以创建许多服务

由于用户拥有许多服务,您需要使用@ user.services(以获取与该用户相关的服务)而不是Service.all,请尝试:

def show
  @user = User.find(params[:id])
  @appointment = Appointment.new
  @services = @user.services.collect {|service| [ service.title, service.id] }
end

并以您的形式

<%= f.select(:service_id, @services) %>