我的form_tag
视图中有edit
:
<%= form_tag stage_batch_path(@stage_batch), multipart: true, class: 'form-inline', role: 'form', method: :put do %>
<div class="form-group">
<%= label_tag 'csv_batch_file', 'Select batch file' %>
<%= file_field_tag 'csv_batch_file', class: 'form-control' %>
</div>
<br>
<div class="form-group">
<%= label_tag 'potential_item_id', 'Input item id' %>
<%= text_field_tag "potential_item_id" %>
</div>
<br>
<%= button_tag 'Stage', class: 'btn btn-primary' %>
<% end %>
目前put
到stage_batches/:id
这是我想要的。
但是,我想向其他控制器添加post
的另一个按钮,比如说Foo#create
。我在another answer中读到formaction
选项可行。但是,给定的示例使用form_for
而非form_tag
:
<% form_for(something) do |f| %>
...
<%= f.submit "Create" %>
<%= f.submit "Special Action", formaction: special_action_path %>
<% end %>
如何将form_tag
重写为form_for
?
答案 0 :(得分:1)
<%= form_tag stage_batch_path(@stage_batch), multipart: true, class: 'form-inline', role: 'form', method: :put do %>
==&GT;
<%= form_for @stage_batch, url: stage_batch_path(@stage_batch), multipart: true, class: 'form-inline', role: 'form', method: :put do |f|%>
同样如下:
<%= form_for @stage_batch, class: 'form-inline' do |f|%> #if @stage_batch is new_record? then method: :post, else method: :put
PS:你应该尝试这个https://github.com/plataformatec/simple_form,一个救星。
使用simple_form,您的表单可以转换为:
<%= simple_form_for @stage_batch do |f|%>
<%= f.input :csv_batch_file, as: :file %>
<%= f.input :potential_item_id %>
<%= f.submit 'stage' %>
<%end%>
简单而美丽。