「belongs_to」オブジェクトを選択するための Rails フォームのフィールド
-
18-09-2019 - |
質問
ああ、だから我慢してください...予約用のモデルとドライバー用のモデルがあります。ドライバーには多数の予約があり、予約はドライバーに属します。
予約を追加または編集するときに、ユーザーがドライバーのユーザー名を入力できるようにしたいと考えています。ユーザー名は一意であり、エンドユーザーにとっては各ドライバーに番号を付けるよりも簡単です。
これが私がそれをやった方法です:
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