1

jquery アップロードを追加しようとしていますが、フォームにパラメーターを渡す必要があります

フォームはこちら

<%= form_for Photo.new do |f|%>
  <%= f.label :title %><br />
  <%= f.text_area :title, :rows => 3, :value => "Add a photo", :onclick=>"this.value='';" %>
  <%= f.file_field :photo, multiple: true %>
  <%= f.hidden_field('event_id', params[:event_id]) %>
  <%= f.submit "Add Picture" %>
<% end %>

しかし、これは機能しません。問題は、リンクが localhost/events/16/photos/useradd に従っていることです

ここで、16 は event_id パラメータです。後で送信されるように、非表示フィールドに配置するにはどうすればよいですか?

アップデート

NoMethodError in Photos#useradd
Showing /home/jean/rail/voix/app/views/photos/useradd.html.erb where line #13 raised:
undefined method `merge' for "16":String

エラーと16が私のevent_idであること

4

1 に答える 1

3

わかりました、ここで暗闇の中で撮影しました:

試す

<%= f.hidden_field 'event_id', :value => params[:event_id] %>

編集-なぜそれが機能したのか:

hidden_​​fieldメソッドには次のシグネチャがありますhidden_field(object_name, method, options = {}) 。hidden_​​fieldに関するドキュメントを参照してください。

hidden_​​fieldによって呼び出されるメソッドとして値16を渡しましたが、これは機能しません。

hidden_​​fieldの3番目の引数は、オプションハッシュです。そのハッシュの「value」フィールドを設定すると、ヘルパーによって生成された入力タグの値が設定されるため、そのフォームフィールドの値として「16」が効果的に設定されます。:)

よろしくお願いします

于 2012-10-03T02:55:14.877 に答える