0

当所选值为nil时,我正在申请option_from_collection_for_select的一些问题。

我有用户模型:

class User < ActiveRecord::Base
  attr_accessible :email, :password, :password_confirmation, :remember_me, :username, :locale
end

和一个预订:

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 放置所选值;这行得通,但我不喜欢这个解决方案。

我该如何解决这个问题?

4

1 回答 1

0

可能有很多方法可以解决这个问题:

至少,您必须为ofcfs 的最后一个参数设置一个条件。

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'})

然后,您必须在保存预订之前验证从选择返回的值不是 0。

我能想到的至少还有三四件事可以解决这个问题

于 2012-05-02T15:27:13.883 回答