0

私の環境

  • Rails 3.2.1
  • ルビー1.9.3p194(2012-04-20リビジョン35410)[x86_64-darwin11.4.0]
  • jquery-rails(2.0.2)
  • ペーパークリップ(3.0.4)

コントローラで「commit」の値を取得したい。

<%= form_for @foo, :url => '/foo/edit/',:remote => true, :html => {:multipart => true}, :id => "peroform" do |f| %>
  <%= f.file_field :logo %>
  <%= f.submit "logo" %>
<% end %>

ファイルを選択しない場合、コミット値を取得できます。

Parameters: {"utf8"=>"✓", "authenticity_token"=>"****", "commit"=>"logo"}

ただし、ファイルを選択すると、パラメータの値が削除されます。

  Parameters: 
    {"foo"=>{"logo"=>#<ActionDispatch::Http::UploadedFile:0x007fd2c0277e88 @original_filename="bar.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"foo[logo]\"; filename=\"bar.png\"\r\nContent-Type: image/png\r\n", @tempfile=#<File:/tmp/RackMultipart20120531-44915-r5kb52>>}, "utf8"=>"✓", "authenticity_token"=>"*", "remotipart_submitted"=>"true", "X-Requested-With"=>"IFrame", "X-Http-Accept"=>"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01"}

どうすればコミット値を取得できますか?

次に、このように複数の送信を使用したいと思います。「logosubmit」を押したときに「logo」だけを保存したいのですが、「allsubmit」を押したときに「name」と「logo」を保存したいです。

<%= form_for @foo, :url => '/foo/edit/',:remote => true, :html => {:multipart => true}, :id => "peroform" do |f| %>
  <%= f.file_field :logo %>
  <%= f.submit "logo" %>

  <%= f.text_field :name %>
  <%= f.submit "all" %>
<% end %>

この複数の送信ボタンについて何か考えがありますか。

よろしくお願いします。

4

1 に答える 1

0

うーん...これはバグだと思いますが、uはイベントハンドラーをバインドして送信ボタンを作成し、送信前に追加のparam(コミット名)を挿入できます。次に、commit paramに基づいてコントローラーで、何を保存するかを決定します。

于 2012-05-31T10:22:58.680 に答える