динамический выбор с рельсами и JQuery - PullRequest
2 голосов
/ 13 октября 2011

У меня есть приложение для корзины, в котором вы выбираете товары из каталога. Я хочу динамически заполнить несколько столбцов, например, доступными цветами на основе выделения, через ajax.

Это мой взгляд, когда вы добавляете новый элемент

<td><%= f.collection_select(:product_id, Product.active.all, :id, :name, :prompt => 'Select Product') %></td>
<td><%= f.text_field :quantity, :size => 6 %></td>
<td><%= f.collection_select(:color_id, Color.all, :id, :name, :prompt => 'Select Color') %></td>
<td><%= f.text_field :price, :size => 8 %></td>
<td><%= f.link_to_remove "remove" %></td>

Я хочу установить параметры цены и цвета на основе значения product_id. вот что у меня так далеко:

$('select#order_items_new').change(function() {
    // How to retrieve table columns based on product_id value?
});

1 Ответ

1 голос
/ 23 сентября 2012

Я надеюсь, что понял ваш вызов точно. Как только продукт выбран, выбор цветов будет отображаться через 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...