У меня есть форма, которую нужно изменить, основываясь на разных вариантах в поле выбора. Поле выбора, которое мне нужно, имеет следующие параметры: Pay & Подарки (оба поля показаны), Pay Only (отображается только поле для оплаты), Подарки Только (показано только подарочное поле).Rails 3: как изменить форму с помощью поля выбора?
Это включает в себя 2 атрибута: pay and: gifts. Есть ли способ иметь один поле выбора f.collection для обоих атрибутов? Я знаю, что мне, вероятно, придется использовать jquery, чтобы показывать и скрывать поля формы, а поля обязательны (validates_presence_of) на основе выбора ... любые предложения о том, как это сделать?
_rewards_step.html.erb
<h2>rewards</h2>
<p>
<%= f.collection_select :pay, Upload::REWARDS, :to_s, :to_s %>
</p>
<p id="payfields">
<%= f.label :pay %><br />
<%= f.text_field :pay %>
</p>
<p id="giftsfields">
<%= f.label :gifts %><br />
<%= f.text_field :gifts %>
</p>
upload.rb
class Upload < ActiveRecord::Base
attr_accessible :pay, :gifts
attr_writer :current_step
validates_presence_of :pay, :if => lambda { |u| u.current_step == "rewards" }
validates_presence_of :gifts, :if => lambda { |u| u.current_step == "rewards" }
REWARDS = ['Pay & Gifts', 'Pay Only', 'Gifts Only']
спасибо за информацию ... У меня возникла проблема с назначением идентификатора в поле выбора. это то, что у меня есть: <% = f.collection_select: reward_type, Upload :: REWARDS,: to_s,: to_s,: id => "rewards"%>. Что-то не так с этой линией? – user1341808
Да, есть, ваш идентификатор используется как опция для выбора, а не как вариант HTML. Попробуйте это: '<% = f.collection_select: reward_type, Upload :: REWARDS,: to_s,: to_s, {}, {: id =>" rewards "}%>' – Matzi
woohoo! это работает – user1341808