我有一个表单需要根据选择框中的不同选项进行更改。我需要的选择框有以下选项: 付费&礼品(均显示这两个字段), 仅付费(仅显示付费字段), 仅礼品(仅显示礼品字段)。Rails 3:如何用选择框更改表单?
这涉及2个属性:付费和:礼物。有没有办法让两个属性都有一个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']
感谢您的信息...我一直有一个问题分配一个id到选择框。这是我目前有的:<%= f.collection_select:reward_type,Upload :: REWARDS,:to_s,:to_s,:id =>“奖励”%>。这条线有什么问题吗? – user1341808
是的,你的id用作select的选项,而不是HTML选项。试试这个:<%= f.collection_select:reward_type,Upload :: REWARDS,:to_s,:to_s,{},{:id =>“奖励”}%>' – Matzi
woohoo!这样可行 – user1341808