Ruby on rails Rails 5.pdf从表单提交在新窗口中打开pdf
我创建了一个表单,可以将数据保存在两个不同的表中,基于单击按钮,现在可以将数据保存到两个不同的表中。Ruby on rails Rails 5.pdf从表单提交在新窗口中打开pdf,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我创建了一个表单,可以将数据保存在两个不同的表中,基于单击按钮,现在可以将数据保存到两个不同的表中。 使用Wicked PDF创建PDF。 现在,我想当用户单击预览按钮时,我想呈现在创建操作上呈现的相同模板。当用户单击预览按钮时,我无法打开预览pdf index.html.erb <%= form_with(model: @invoice, :html => {:id => 'invoice-form-validation'}, url: [@payment_milestone
使用Wicked PDF创建PDF。
现在,我想当用户单击
预览
按钮时,我想呈现在创建
操作上呈现的相同模板。当用户单击预览按钮时,我无法打开预览pdf
index.html.erb
<%= form_with(model: @invoice, :html => {:id => 'invoice-form-validation'}, url: [@payment_milestone,@invoice], local: true) do |form| %>
<div>
<%= form.submit ' Preview Invoice', name: 'preview_invoice_submit', :class=>"button secondary button-margin-top fa fa-eye" %>
<%= form.submit :class=>"button primary button-margin-top fa fa-files-o", name: 'invoice_submit'%>
</div>
<% end %>
提交或表单使用提交按钮的名称设置参数。
因此,您可以测试单击的提交按钮,并在预览时重定向:
def create
invoice_model = params[:invoice_submit] ? Invoice : TempInvoice
@invoice = invoice_model.new(invoice_params)
if @invoice.save
if params.has_key?(:preview_invoice_submit)
redirect_to project_financial_payment_milestone_invoice_path(@invoice, format: :pdf)
else
redirect_to project_financial_payment_milestone_invoices_path, notice: 'Invoice was successfully created.'
end
else
redirect_to project_financial_payment_milestone_invoices_path
end
end
(猜测路径名)获取错误,比如
未定义的方法“has#u key”for#你的意思是什么?有键吗?
我在创建
操作中没有响应
。您总是发布应用程序/x-www-form-urlencoded
,而不是html等等。这就是为什么您必须使用propper格式(即pdf)重定向到show方法。show
操作是否使用格式:pdf,即通过获取…invoices/1.pdf工作?这正如我所期望的那样工作,但我在尝试从临时模型查看时,在发票控制器的def set_invoice@invoice=invoice.find(params[:id])行中仍然遇到问题,如果我这样做,则在tempvoice.find(params[:id])行中结束
然后我从发票模型中得到了视图错误,我可以理解,但这是另一个主题。当您为同一目的使用不同的类时。好的,您可以做的是@invoice=invoice.find_by(id:params[:id])| | tempvoice.find(params[:id])
。但是:当发票的:id和TempInvoice没有完全分开(即UUID)时,您会遇到问题。最好对Invoice和TempInvoice有不同的操作(甚至更好,更多的Rail是不同的控制器)。。。或者使用单表继承
将Invoive和TempInvoice存储在同一个表中。
def create
invoice_model = params[:invoice_submit] ? Invoice : TempInvoice
@invoice = invoice_model.new(invoice_params)
if @invoice.save
if params.has_key?(:preview_invoice_submit)
redirect_to project_financial_payment_milestone_invoice_path(@invoice, format: :pdf)
else
redirect_to project_financial_payment_milestone_invoices_path, notice: 'Invoice was successfully created.'
end
else
redirect_to project_financial_payment_milestone_invoices_path
end
end