質問

ああ、だから我慢してください...予約用のモデルとドライバー用のモデルがあります。ドライバーには多数の予約があり、予約はドライバーに属します。

予約を追加または編集するときに、ユーザーがドライバーのユーザー名を入力できるようにしたいと考えています。ユーザー名は一意であり、エンドユーザーにとっては各ドライバーに番号を付けるよりも簡単です。

これが私がそれをやった方法です:

def create
  if params[:booking][:driver].empty? 
    params[:booking][:driver] = nil 
  else
    @driver = Driver.find(:first, :conditions => { :username => params[:booking][:driver] })
    params[:booking][:driver] = @driver
  end

このコードは送信時には正常に機能しますが、フォームが読み込まれると、オブジェクトの参照が表示されます (例:#) ユーザー名を表示するために必要です。編集ビューの form_for の <%= f.text_field :driver %> を変更してドライバーのユーザー名の値を取得するにはどうすればよいですか?

私はこれを正しい方法で行っているのでしょうか、それとも必要なことを実行する非常に簡単なレールの方法はありますか?

役に立ちましたか?

解決

「ただし、フォームが読み込まれるとき」とは、フォームの作成に失敗したとき、または編集しているときを意味しますか?完全な更新を投稿してアクションを作成していただけますか。

params[:booking][:driver] = @driver.username では、パラメーターにオブジェクトではなく文字列を入力する必要がありますが、これが実際にやりたいことであるかどうかはわかりません。空白の場合は nil に設定するのではなく、空白のままにしておきます。 nil はオブジェクトであるため、おそらく '#' が表示されます。

ここでやっていることは正しくないようです。とにかく、フィールドが driver_id であるドライバーの選択ボックスに固執する方がおそらく理にかなっています。本当にテキスト ボックスを使用したい場合は、お手伝いしますか?まずはコードを投稿してください。

これを見たことがありますか?もう少しガイドするのに役立つはずです。

http://railscasts.com/episodes/57-create-model-through-text-field

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top