指向单个控制器操作的多个按钮

Multiple buttons pointing to single Controller Action

我正在开发一个应用程序,用户可以在其中打印 PDF 或 JPG 格式的文档,分别使用 wicked-pdf 和 imgkit。 我有两个按钮,一个用于 PDF,另一个用于 JPG。是否可以让这些按钮指向控制器中的相同操作,这里是 'create'。 我的按钮是-

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

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

我可以创建两个动作吗? 如果是,怎么会这样?如何捕捉哪个按钮被点击并渲染相应的视图。

首先,一般推荐使用路由助手,而不是指定控制器和动作。所以你的代码可以是

<%= 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 并将您的 link 设置为按钮,但这更多是个人喜好。