如何在不使用控制器的情况下将表单数据提交并显示在rails中的另一个页面上?

时间:2016-12-16 09:39:33

标签: javascript html ruby-on-rails ruby ruby-on-rails-4

我有一个表单,它接受各种输入,当点击提交时,它应该将这些参数数据显示在另一个页面上。例如,我有一个名为enter_invoice.html.erb的表单

我为它编写了以下html代码。

<%= form_tag('/generate_invoice', remote: true, multipart: true, type: :post )    
do |f| %>
 <input type="text" name="order[txnid]" placeholder="Enter your txnid" /><br>
 <input type="number" name="order[stamp_amount]" placeholder="Stamp amount" />
 <br>
 <input type="text" name="order[payment][created_at][strftime]" 
 placeholder="Payment Created at" /><br>
 <input type="text" name="order[payment][mode]" placeholder="Payment mode" />
 <br>
 <input type="text" name="order[user][profile][first_name]" placeholder="User 
 First name" /><br>

<input type="submit" class="submit action-button" /><br>

 <% end %>

现在我有另一个名为genrate_invoice.html.erb的表单。我在enter_invoice中输入的数据应显示在generate_invoice上。

<html lang="">
<head>
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
 </head>
<body style="margin:0 auto;padding:0;max-width:595px;font-family: 
 'PFBeauSansPro' 'Tahoma';font-weight:thin;font-size: 14px;background-size: 
  cover;ont-family: 'PFBeauSansPro';font-weight: thin !important;"> 
 TNXid : <%= @order.txnid %><br>
 Stamp_amount : <%= @order.stamp_amount %> <br/>
 Created_at : <%= @order.payment.created_at.strftime %> <br/>
 Address: <%= @order.address.address1 %><br/>
        :
        :

 </body>
 </html>

那么如何提交要在generate_invoice.html.erb上显示的数据。

新手还在铁轨上。请指导我。

1 个答案:

答案 0 :(得分:0)

我认为您要做的是通过多个步骤将数据输入到单个对象中。避免使用控制器不是最佳解决方案。

如果您不熟悉rails,我建议您查看wicked gem。这将有助于您构建多步输入。

或者,您可以通过以下方式构建自己的解决方案:

  • 向正在更新的对象添加状态机(以跟踪对象在进程中的哪个点),
  • 使用表单partial来匹配每个对象状态,并修改视图以便它选择与当前对象状态匹配的partial。
  • 然后使用表单对象来执行验证,这与当前状态一致。如果您不熟悉表单对象,请查看reform gem