Я переформулирую этот вопрос, поскольку теперь понимаю проблему лучше.
У меня есть приложение с четырьмя моделями: пользователи, продукты, сорта и сезоны.
Пользователь 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 на @iversity.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 - это идентификатор разновидности элемента, на котором я щелкнул.
Вот моя установка:
ProductsController # show
@product = Product.find (params [: id])
@varumes = @ product.variversity @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 %>
VaritiesController # show.
def show
@variety = Variety.find(params[:id])
respond_to do |format|
format.html
format.xml { render :xml => @variety}
format.js
end
end
разновидности / show.js.rjs
@ page.replace_html "userList",: partial => "products / users",: collection => @iversity.users
Итак, в настоящее время страница отображает и отображает правильный HTML и данные. Но onclick не работает. Когда я нажимаю на выбор, приложение не обрабатывает запрос должным образом и список пользователей не изменяется.
Обновлять
Ответ на комментарий Анатолия:
Я не уверен, какой именно маршрут нужно добавить. Я пробовал добавить следующее, но результат был таким же, как и раньше:
map.resources: разновидности,: member => {: show =>: get}
Не могли бы вы уточнить, какой членский маршрут следует называть?