私はこの問題をよりよく理解しているので、この質問を再定式化しています。
ユーザー、製品、品種、季節の4つのモデルを持つアプリケーションがあります。
ユーザー
has_many :seasons
has_many :products, :through => :seasons
has_many :varieties, :through => :seasons
製品
has_many :seasons
has_many :users, :through => :seasons
has_many :varieties
バラエティ
belongs_to :product
has_many :seasons
has_many :users, :through => :seasons
季節
belongs_to :product
belongs_to :user
belongs_to :variety
製品/ショービューでは、特定の製品で利用可能な各品種と、その特定の製品を持っているユーザーを一覧表示します。
製品/ショーページが最初に読み込まれるときに、次のようにして製品を持っているすべてのユーザーを表示します。
<% @product.seasons.each do |c| %>
<%= link_to c.user.name, c.user %>
<% end %>
また、次のようにして、製品に使用できる品種をリストします。
<% @product.varieties.each do |c| %>
<%= link_to_remote variety.name, :url => variety_path(variety) %>
<% end %>
ここでAjaxを実行する必要があります。品種名をクリックすると、@product.seasonsループを@variety.seasonsに置き換えたいと思います。これは、その特定の種類を持つユーザーのみを表示する必要があると思います。したがって、次のようになります。
<% @variety.seasons.each do |c| %>
<%= link_to c.user.name, c.user %>
<% end %>
近づいていますが、これを機能させることができません。現在、バラエティをクリックしても、フロントエンドでは何も起こりません。ログで、私はこれを取得します:
Processing VarietiesController#4 (for ip at 2009-09-24 16:02:29) [POST]
Parameters: {"authenticity_token"=>"9pDgKrHNbg0aMklsQsGl5BQa34bfr0Ft8Fpbxki3XXw="}
ActionController::UnknownAction (No action responded to 4. Actions: check_vendor_role, index, and show)
ログは#4を参照し、アクションとして4を参照します。4はクリックしたアイテムの品種IDです。
これが私の設定です:
ProductsController#show
@product = Product.find(params [:id])
@varieties = @ product.varieties @users = @ product.users
製品/ショービュー#この製品を使用しているユーザーを一覧表示します
<div id="userList">
<%= render :partial => "products/users" %>
</div>
#Lists the varieties available for this product
<% @product.varieties.each do |variety| %>
<%= link_to_remote variety.name, :url => variety_path(variety) %>
<% end %>
VarietiesController#show。
def show
@variety = Variety.find(params[:id])
respond_to do |format|
format.html
format.xml { render :xml => @variety}
format.js
end
end
varieties / show.js.rjs
@ page.replace_html "userList"、:partial => "products / users"、:collection => @ variety.users
そのため、現在、ページは適切なhtmlとデータをレンダリングおよび表示しています。しかし、onclickは機能していません。バラエティをクリックすると、アプリがリクエストを適切に処理せず、ユーザーリストが変更されません。
アップデート
アナトリイのコメントへの回答:
どのルートを追加する必要があるのか正確にはわかりません。以下を追加してみましたが、結果は以前と同じでした。
map.resources:varieties、:member => {:show =>:get}
どのメンバールートを呼び出すべきかについて、より具体的に教えてください。