私はrails3-jquery-autocomplete gemを使用していますが、モデルに存在するフィールドに使用するとうまく機能します。しかし、私はそれを関連付けに使用しようとしてきましたが、それを機能させる方法がわかりません。それでは、私が持っているものを説明しましょう:
モデル:
class Receipt < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :receipts
end
コントローラ
class Admin::ReceiptsController < AdminController
autocomplete :user, :name
def index
@receipts = Receipt.all
end
def show
@receipt = Receipt.find_by_id(params[:id])
end
def edit
@receipt = Receipt.find_by_id(params[:id])
@users = User.all
end
end
ビュー (フォーム) :
<%= form_for(@receipt, :url => admin_receipt_path, :html => { :multipart => true }) do |f| %>
<div class="clearfix">
<%= f.label :value, "Value($)" %>
<div class="input"><%= f.text_field :value %></div>
</div>
<div class="clearfix">
<%= f.label :user_id, "User" %>
<div class="input">
<%= f.autocomplete_field :user_id, autocomplete_user_name_admin_receipts_path %>
</div>
</div>
.....
問題は...ユーザー名を取得できますが、実際にユーザーIDをそこに保存したいのです。管理者がユーザーに関連付けられた既存の領収書を編集しようとしたときに名前を表示したいのと同じ方法です。このドロップダウンでできること:
<div class="clearfix">
<%= f.label :user_id, "User" %>
<div class="input"><%= f.select :user_id, @users.collect {|p| [ p.name, p.id ] },{:prompt => 'Select a User'} %></div>
</div>
この宝石でこれを行う方法がわかりません....