Несколько кнопок, указывающих на одно действие контроллера

Я делаю приложение, в котором пользователь может распечатать документ в формате PDF или JPG, используя соответственно wicked-pdf и imgkit. У меня есть две кнопки, одна для PDF и другая JPG. Возможно ли, чтобы эти кнопки указывали на одно и то же действие в контроллере, которое здесь называется "создать". мои кнопки как-

<%= button_to "Print Bill[PDF]", :action => "create" %>

<%= button_to "Print Bill[JPG]", :action => "new" %>

Могу ли я сделать оба действия создать? если да, то как? Как узнать, какая кнопка нажата, и отобразить соответствующий вид.

1 ответ

Решение

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

<%= button_to "Print Bill[PDF]", bill_print_path(@bill, format: :pdf) %>
<%= button_to "Print Bill[JPG]", bill_print_path(@bill, format: :jpeg) %>

и в вашем контроллере

def print
    # insert here code to find your bill and load it from DB
    respond_to |format| do
        format.jpeg do
            # code to produce the jpeg version of the bill
        end
        format.pdf do
            # code to produce the pdf version of the bill
        end
    end
end

В качестве последнего шага я бы изменил button_to в link_to и стилизовать вашу ссылку как кнопку, но это скорее личное предпочтение.

Другие вопросы по тегам