指向单个控制器操作的多个按钮
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 设置为按钮,但这更多是个人喜好。
我正在开发一个应用程序,用户可以在其中打印 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 设置为按钮,但这更多是个人喜好。