Как отправить параметр [: commit] с помощью remote: true form_for - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть форма, и мне нужно иметь 2 кнопки отправки. Это кажется единственным способом, которым я могу думать, чтобы выполнить sh то, что я хочу.

Цель состоит в том, чтобы использовать одну форму для отправки одному методу, а затем, возможно, перенаправить на другой метод в зависимости от переданных параметров потому что функции будут другими.

Форма:

<%= form_for(:mass, url: mass_product_variant_category_path, method: :get, remote: true) do |mass| %>
    <%= mass.submit "Update All", name: "All", class: "btn btn-light" %>
    <%= mass.submit "Update Files", name: "Files", class: "btn btn-light" %>
    <% @Stuff.each do |variant| %>
       <%= check_box_tag 'store_variant_ids[]', variant.id %>
    <% end %>
    ...
<% end %>

Я пробовал: <%= submit_tag "Submit", name: "All" %>, также не работает.

html:

<input type="submit" name="File" value="Update Files" class="btn btn-light" data-disable-with="Update Files">

Контроллер:

def mass_product_variant_category
   @stuff = Stuff.where(store_variant_id: params[:store_variant_ids])
   if params[:commit] == "File"
     redirect_to edit_multiple_stuffs_path(stuffs: @stuffs)
   else
     respond_to do |format|
       format.js
     end
   end
end

Передаваемые параметры:

{..."mass" => {hidden_field: "int"}, "other_attributes" => ["int"]...}

Это связано с использованием remote: true, но не уверен почему или как.

Как я могу пройти через параметр, основанный на форме отправки?

Я читал другие SO сообщения на эту тему, но их очень мало и ни у кого, кажется, нет хороших или любых принятых ответов. Я также не могу использовать hidden_fields из-за необходимости перенаправления на основе используемой кнопки отправки.

Есть ли способ "Rails", чтобы сделать это без необходимости добавлять javascript, или это единственный вариант?

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Я решил это с помощью hidden_field_tag в форме, которая заполняется на основе кнопки отправки, используемой при нажатии. Затем я могу проверить параметр hidden_fields в контроллере.

0 голосов
/ 05 февраля 2020

Атрибут "name" отображается на имя в params ha sh. Для этого случая вы должны сделать что-то вроде:

if params["File"]
  # Something
elsif params["All"]
  # Other thing
else
  # Default
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...