2

私の見解では、ユーザーは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_typecollection_selectですか?

編集

jQueryを使用してみましたが、js変数をビューにエクスポートする方法がわかりません。

<script type="text/javascript">
    $("#phototype").change(function() {
        var phototype = $('#phototype').val()
    });
 </script>

アップデート

データベースに2つのテーブルがあります。

表1:photos

  1. id
  2. photo_type_id(表idを参照photo_types

表2:photo_types

  1. id
  2. photo_type

ユーザーはドロップダウンメニューから写真の種類を選択できます。ユーザー入力でテーブル内のを見つけてphoto_type_id、テーブルに挿入します。photo_typesphoto_type_idphotos

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
4

1 に答える 1

1

hidden_field次のアクションに価値を送るために使用していると思います。コントローラーのアクションで同じことをしてみませんか:

  def create
    @photo = Photo.new(params[:photo])
    @photo.photo_type_id = PhotoType.find_by_type(params[:photo][: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

意見:

  <%= f.collection_select :photo_type, Upload::PHOTOTYPE, :to_s, :to_s, :include_blank => false, :id => "phototype"%>

提案: 標準的な方法は、ビューでのクエリを避けることです。

于 2013-02-20T18:39:47.033 に答える