Verschachtelte Routing für Modelle mit Doppel Verbände

stimmen
0

In einer Spielzeug - Rails - Anwendung, bin Modellierung ich eine Situation , wo Sie eine Reihe von Töpfen, die jeweils eine Menge von etwas enthält, und Sie können Transaktionen zwischen den Töpfen machen. Eine Transaktion kann kommen aus jedem Topf, und gehen Sie zu jedem Topf.

Hier sind die relevanten Teile der Modelle:

class Pot < ActiveRecord::Base
  has_many :to_transactions, :foreign_key => to_id, :class_name => Transaction
  has_many :from_transactions, :foreign_key => from_id, :class_name => Transaction
end

class Transaction < ActiveRecord::Base
  belongs_to :to_pot, :class_name => Pot, :foreign_key => to_id
  belongs_to :from_pot, :class_name => Pot, :foreign_key => from_id
end

Dies ermöglicht es mir Folgendes an der Konsole zu tun:

>> p = Pot.find(123)
>> p.from_transactions
=> # returns array of transactions from pot 123
>> t = p.to_transactions.new
=> # t is a new transaction with to_id set to 123

und so weiter.

Ich habe ein Problem das Routing einrichten. Zum Beispiel würde Ich mag:

  • /pots/123/from_transactions eine Liste aller Transaktionen aus Topf zu geben, 123,
  • /pots/123/to_transactions/newzu geben , die neue Geschäftsform, mit dem to_idSatz auf 123

Ist das möglich? Jede Hilfe dankbar empfangen etc etc.

Veröffentlicht am 30/12/2009 um 03:12
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
0

Ich würde sagen, eine saubere Art und Weise der Verwaltung ist, dass alle from_transactions Anfrage im Zusammenhang gehen zu from_transactions_controller und to_transactions gehen im Zusammenhang mit to_transactions_controller. Aber das zugrunde liegende Modell könnte für beide gleich sein:

In Routing-Datei können Sie Ihre Routen wie folgt an:

'pots/:id/to_transactions/new', :controller => 'to_transactions', :action => 'new' 
'pots/:id/from_transactions/', :controller => 'from_transactions', :action => 'index'

Hilft das?

Beantwortet am 30/12/2009 um 09:53
quelle vom benutzer

stimmen
0

Mein routes.rb enthält nun die folgende:

map.resources :transactions, :path_prefix => '/pots/:from_id', :as => :from_transactions
map.resources :transactions, :path_prefix => '/pots/:to_id', :as => :to_transactions

Das bedeutet zum Beispiel, dass eine Anforderung zum /pots/123/from_transactions/newan die gesendet wird , transactionsSteuereinheit und params[:from_id]wird auf 123.

Beantwortet am 01/01/2010 um 20:11
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more