Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 5.pdf从表单提交在新窗口中打开pdf_Ruby On Rails_Ruby On Rails 5 - Fatal编程技术网

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