0

ああ、ご容赦ください...予約用のモデルとドライバー用のモデルがあります。ドライバーには多くの予約があり、予約はドライバーに属します。

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

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

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 %> を変更して、ドライバーのユーザー名の値を取得するにはどうすればよいですか?

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

4

1 に答える 1

1

「しかし、フォームがロードされたとき」とは、作成に失敗したとき、または編集しているときのことですか? 完全な更新を投稿してアクションを作成してください。

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

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

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

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

于 2010-03-08T14:00:39.867 に答える