0

Скажем, у меня есть модель статьи, и в представлении «Параметры» модели статьи у меня есть две кнопки отправки за пределами формы, «Обновить сведения» и «Следующий шаблон».Rails: множественная кнопка отправки вне простой формы

Мой вопрос: Как я могу узнать, какая кнопка нажата в контроллере. Обе кнопки отправки находятся за пределами простой формы. Я попытался как:

<%= f.submit "update Details",name: "update_details", class: "x-update" %> 


<%= f.submit 'Next Template', name: "next_template", class: "x-next" %> 

и логика же на контроллере

if params[:update_details] 
     [..] 
    elsif params[:next_template] 
     [..] 
    end 

, но он не работает. Как мне это сделать? Я не могу изменить маршрут, так что есть способ отправить другую переменную, которая получает [: params]?

ответ

0

Я решил это, поместив в наш шаблон HTML-форм:

<input type="hidden" name= "action_type" id="action_type"> 

затем в файл JavaScript, который мы добавили

$('.x-update').on 'click', -> 
$("#action_type").val("exit") 
$("#details-form").submit() 

, а затем в файле контроллера мы проверили параметры:

if params[:action_type] == "exit" 
    redirect_to #your desired path 
else 
    redirect_to #based on given path 

Вот и все. Оно работает.

0

Я думаю, что вы можете сделать что-то вроде этого:

<%= f.submit "update Details",name: "update_details", value: true, class: "x-update" %> 
<%= f.submit 'Next Template', name: "next_template", value: true, class: "x-next" %> 

По желанию, я думаю, что вы можете использовать одни и те же имена и разные значения.

<%= f.submit "update Details",name: "next_template", value: false, class: "x-update" %> 
<%= f.submit 'Next Template', name: "next_template", value: true, class: "x-next" %> 

И в контроллере:

if params[:next_template] 
    something 
else 
    something_else 
end 
-1

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

0

Попробуйте в контроллере проверить, какие параметры вы получаете при запуске отправки.

render plain: params 

Дополнительно Вы можете использовать опцию "hidden_field_tag" в боковой форме.

<%= hidden_field_tag 'plan', params[:plan] = 2 %>