私の見解では、ユーザーはcollection_selectを使用してデータを入力する必要があります。
params[]
コントローラでを使用してデータにアクセスできることを知っています。
しかし、値を選択した直後にユーザーが値にアクセスするにはどうすればよいですか?
これは私がやろうとしていることです(動作しません):
<%= f.collection_select :photo_type, Upload::PHOTOTYPE, :to_s, :to_s, :include_blank => false, :id => "phototype"%>
<%= f.hidden_field :photo_id, :value => Photo.find_by_type(params[:photo_type]).id %>
私の質問は、どのようににアクセスする:photo_type
のcollection_select
ですか?
編集
jQueryを使用してみましたが、js変数をビューにエクスポートする方法がわかりません。
<script type="text/javascript">
$("#phototype").change(function() {
var phototype = $('#phototype').val()
});
</script>
アップデート
データベースに2つのテーブルがあります。
表1:photos
- id
- photo_type_id(表
id
を参照photo_types
)
表2:photo_types
- id
- photo_type
ユーザーはドロップダウンメニューから写真の種類を選択できます。ユーザー入力でテーブル内のを見つけてphoto_type_id
、テーブルに挿入します。photo_types
photo_type_id
photos
codeitによると、コントローラーを次のように変更しました。
def create
@photo = photo.new(params[:photo])
photo_type_id = PhotoType.find_by_type(params[:photo_type]).id
respond_to do |format|
if @photo.save
format.html { redirect_to @photo, notice: 'photo was successfully created.' }
format.json { render json: @photo, status: :created, location: @photo }
else
format.html { render action: "new" }
format.json { render json: @photo.errors, status: :unprocessable_entity }
end
end
end