1

私のモデル

class Client < ActiveRecord::Base
  attr_accessible :name
  has_many :bookings
  validates_presence_of :name
end

class Agent < ActiveRecord::Base
  attr_accessible :name
  has_many :bookings
  validates_presence_of :name
end

class Booking < ActiveRecord::Base
  attr_accessible :booking_time, :agent_id
  belongs_to :client
  belongs_to :agent
  validates_presence_of :booking_time
end

これは頭​​を悩ませています。エージェント側とクライアント側の両方から予約を表示したいのですが、予約コントローラーのインデックス メソッドでルートを処理するにはどうすればよいでしょうか?

agents/agent_id/bookings and clients/client_id/bookings?

2 番目の質問: クライアントのみが予約を作成しますが、予約とエージェントの間の関係を正しく維持するにはどうすればよいですか?

  def create
    @client = Client.find(params[:client_id])
    @booking = @client.bookings.build(params[:booking])
    @agent = Agent.find(params[:booking][:agent_id])
    @agent.bookings << @booking

    if (@booking.save and @agent.save)
      redirect_to [@client, @booking]
    else
      render :action => "new", :notice => "Booking could not be created"
    end
  end
4

1 に答える 1

3

最初の質問については、単純にルート (config/routes.rb) に入力します。

resources :agents do
    resources :bookings
end

resources :clients do
    resources :bookings
end

これにより、URL にネストが作成されます。Rails ガイドの詳細: http://guides.rubyonrails.org/routing.html

2 番目の質問については、何をしようとしているのかわかりません。それは、エージェントや予約から何を救おうとしているかによって異なります。それらの間の動作がどのように機能するかわかりません。

アプリケーションをどのようにテストしていますか?

于 2012-06-26T13:32:18.387 に答える