2012-05-02 18 views
0

選択した値がnilの場合、option_from_collection_for_selectの問題をいくつか経験しています。予約に関連していることがgoiingされているユーザーとの選択があり/編集ページを追加レール3選択されたヌル値を持つoption_from_collection_for_select

class Reservation < ActiveRecord::Base 
    belongs_to :user 
end 

予約で:

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

と予約1:

私はUserモデルを持っています:

<%= 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であるかどうかに応じて選択した値を入れます。これは動作しますが、私はこの解決策が嫌いです。

どうすればこの問題を解決できますか?あなたはofcfsための最後の引数のための条件を置く必要があるだろう、非常に少なくとも

答えて

0

は、おそらく多くの本を回避する方法があります。

@users = User.all 
@users.insert(0, {:id=>0,:username=>'PLEASE SELECT A USER'}) 

は、その後、あなたが選択から返された値は、前に0でないことを検証する必要があるだろう:

options_from_collection_for_select(
    @users, :id, :username, 
    @reservation.user.blank? ? 0 : @reservation.user.id) 

次に、あなたの作成アクションで、あなたは適切なハッシュを付加する必要があると思いますあなたは予約を保存します。

私はこの

の周りにその仕事を考えることができ、少なくとも3つのまたは4つの他の事は感謝RadBradが
+0

ありますが、私は '@reservationかどうかをチェックする(私はルビー/ RoRのに新たなんだ)ソリューションのこの種を探していました.user.id'は 'options_from_collection_for_select'でnullでした。これは私の問題を解決します: '@ reservation.user.id.nil? ? "":@ reservation.user.id'他に何も追加する必要はありません –

+0

上記のコメントに誤字があります。正しい方法は: '@ reservation.user.nil? ? "":@ reservation.user.id' –

関連する問題