0

私は2つのモデルを持ってCircuitおりOrganisation、次の関係があります:

circuit.rb

belongs_to :organisation

組織.rb

has_many :circuits

circuit_controller.rb

...
if params[:id]
  @circuit = Circuit.find(params[:id])
  @backup_circuits = @circuit.organisation.circuits.where('id != ?', @circuit.id)
end
...

update.rhtml (サーキットビュー)

<%= collection_select 'circuit', 'backup_circuit_id', @backup_circuits, :id, :product_name %>

しかし、私はこのエラーを受け取ります: undefined methodproduct_name' for " # AND id != ? ":String`

私が見る限り、モデリングは問題ないはずですが、疑わしいのは、コントローラーで行ったcircuit連鎖organisationだけcircuitsですorganisation

Rails のバージョンは 2.3.14 です

あるいは、私が使用する場合

<%= select "circuit", "backup_circuit_id", @backup_circuits %>

代わりに、ページがレンダリングされますが、ドロップダウン値は空で、値は何かが壊れていることがわかっているときに取得する16進アドレスです...

4

1 に答える 1

1

Rails 2.3.14 ではサポートされていないと思います.where()- 実際、Rails 2.3.11 ではサポートされていません。試してみました。

Rails 2.3.14 では、実際にクエリをチェーンすることはできません... Rails 2.3.x のソリューションは次のとおりです。

@circuit.organisation.circuits.find(:all, :conditions => ['id != ?', @circuit.id])
于 2013-08-21T13:28:15.243 に答える