Ruby on rails 3.1 rails 3选项\u来自\u集合\u,用于选择带有选定空值的\u
当所选值为nil时,我遇到了一些有关\u select的\u集合\u中的选项\u的问题 我有一个用户模型:Ruby on rails 3.1 rails 3选项\u来自\u集合\u,用于选择带有选定空值的\u,ruby-on-rails-3.1,form-helpers,Ruby On Rails 3.1,Form Helpers,当所选值为nil时,我遇到了一些有关\u select的\u集合\u中的选项\u的问题 我有一个用户模型: class User < ActiveRecord::Base attr_accessible :email, :password, :password_confirmation, :remember_me, :username, :locale end class用户
class User < ActiveRecord::Base
attr_accessible :email, :password, :password_confirmation, :remember_me, :username, :locale
end
class用户
预订一张:
class Reservation < ActiveRecord::Base
belongs_to :user
end
类保留
在“预订添加/编辑”页面中,有一个选择,其中用户将与预订关联:
<%= select_tag('user_id',
options_from_collection_for_select(@users, :id, :username, @reservation.user.id)) %>
当@reservation.user.id不是nil时,这在编辑页面中起作用,但我在添加页面中得到nil错误。
现在我检查@reservation.user.id是否为nil,并根据是否为nil输入所选值;这是可行的,但我不喜欢这个解决方案
如何解决这个问题?解决这个问题的方法可能有很多: 至少,您必须为OFCF的最后一个参数设置一个条件
options_from_collection_for_select(
@users, :id, :username,
@reservation.user.blank? ? 0 : @reservation.user.id)
然后,在创建操作中,您必须预先添加一个适当的哈希:
@users = User.all
@users.insert(0, {:id=>0,:username=>'PLEASE SELECT A USER'})
然后,在保存预订之前,必须验证select返回的值不是0
至少有三到四件事我可以想到解决这个问题谢谢RadBrad,我一直在寻找这种解决方案(我是Ruby/RoR新手)来检查
@reservation.user.id
在选项中是否为空(来自\u collection\u,用于\u select
)。这解决了我的问题:@reservation.user.id.nil?“”:@reservation.user.id
无需添加其他内容。我上面的评论中有一个输入错误;正确的检查方法是:@reservation.user.nil?“”:@reservation.user.id