2012-06-14 2 views
0

UPDATE 6/21/12Изменение переменной в форме, основанной на отборе в форме

У меня есть форма в рельсах, которые работают аналогично для электронной коммерции проверки.

Пользователь выбирает час старта, час, дату, время и цену (почасовые, еженедельные, ежедневные и т. Д.) В форме. У продукта уже есть установленная цена в базе данных, в которую я конвертирую (почасовые, еженедельные, ежедневные и т. Д.), Которые я хотел бы изменить в зависимости от предпочтения цены, а затем получить представленную остальную форму.

Я слежу за скринкастом Райана на dynamic select menus, но я не был уверен, как я поместил его демо в мое приложение, так как я не хочу, чтобы пользователь выбирал цену только меру (ежедневно/ежечасно ./и т.д.)

Зубчатые has_many line_items line_items принадлежит Гир и тележках

Ниже мой код:

передач Модель (где я создал ценовые переменные)

class Gear < ActiveRecord::Base 
    attr_accessible :title, :size, :price, :sub_category_id, :user_id, :image, :image_a, :remote_image_url, :color, :year, :latefee, :cancellation, :minrental, :policy, :about, :address, :city, :state, :zip 
    belongs_to :user 
    belongs_to :sub_category 
    has_one :category, :through => :sub_category 
    has_many :comments, :dependent => :destroy 
    has_many :line_items 
    has_many :calendars 
    require 'carrierwave/orm/activerecord' 
    mount_uploader :image, GearpicUploader 
    mount_uploader :image_a, GearpicUploader 
    before_destroy :ensure_not_referenced_by_any_line_item 

    validates :title, presence: true 
    validates :size, presence: true 
    validates :price, presence: true 
    validates :sub_category_id, presence: true 
    validates :user_id, presence: true 

    def hourly_price 
    price/24 
    end 

    def weekly_price 
    price*7 
    end 

    def monthly_price 
    weekly_price*4 
    end 
end 

Посмотреть

<div class="gearside_date_top"> 
    <%= form_for LineItem.new do |f| %> 
    <p><%= render :partial => "price" %>/
     <%= f.select :day_or_hour, [['day', 1], ['hour', 2]], :id => 'day_or_hour' %> 
    </p> 
</div>  

Частичное Выдается Просмотр

<em>from</em> 
<span id="gear_daily" style="font-size: 190%; color: #94cbfc;">$<%= @gear.price %></span> 
<span id="gear_hourly" style="font-size: 190%; color: #94cbfc; display:none;">$<%= @gear.hourly_price %></span> 

Javascript

$('#day_or_hour').change(function() { 

    var $index = $('#day_or_hour').index(this); 

    if($('#day_or_hour').val() = '2') { 
    $('#gear_hourly').show(); 
    } 
    else { 
    $('#gear_daily').show();//else it is shown 

    } 
}); 

Я не могу заставить его работать.

ответ

1

Вы можете поставить свою цену в частично:

<div class="gearside_date_top"> 
    <%= form_for LineItem.new do |f| %> 
    <%= render :partial => "price" %> 
    <%= f.select :day_or_hour, [['day', 1], ['hour', 2]], :id => 'day_or_hour' %> 

_price.html.erb

<em>from</em><span style="font-size: 190%; color: #94cbfc;">$<%= @gear.price %></span> 

В вашем line_item.js вы положили код для обновления цены: line_item.js

$('#day_or_hour').change(function() { 
    $.get("/cart/update_price", {option: $(this).val()}, function(data) { 
    } 
} 

В cart_controller.rb вы создаете метод update_price, который делает вызов line_item.rb total_price.

Упование вы понимаете.

редактировать

Это будет выглядеть как-то вроде этого.

def update_price 
    @gear.price = LineItem.total_price(@gear) 
    render :partial => 'price' 
end 
+0

Можете ли вы рассказать о том, каким будет выглядеть метод update_price, а также как отправить эту переменную через форму? – DaveG

+0

Добавлено изменение с помощью метода update_price.Этот код просто дает вам представление о том, как будет выглядеть код. – MurifoX

+0

Получил это спасибо .. – DaveG

Смежные вопросы