Я надеюсь, что понял ваш вызов точно. Как только продукт выбран, выбор цветов будет отображаться через ajax вместе с ценой.
вот выбор товара.
<%= form_tag "some_form" do |f| %>
Choose a product:
<%= select_tag "product_id", options_for_select( @products.collect { |p| [p.name, p.id]} ), :include_blank => true %>
<br>
<div id="colors_select"></div>
<% end %>
при изменении выбора товара ajax запускается и получает цвета и цену товара.
$(document).ready(function() {
$("#product_id").live("change", function() {
$.ajax({
url: '/get_colors',
data: {
product_id: $(this).val();
},
cache: false,
success: function(html) {
$("#colors_select").html(html);
}
});
});
});
не забудьте указать маршрут к методу, который возвращает цвета.
App::Application.routes.draw do
match 'get_colors' => 'colors#get_colors'
простой метод, который возвращает частичное с цветами и ценой. Как только ваши ассоциации установлены, вы можете получить цвета определенного продукта с помощью: Product.find (params [: product_id]). colors
class ColorsController < ApplicationController
def get_colors
@colors = Color.all
@price = Product.find(params[:product_id]).price
render :partial => 'get_colors'
end