Ruby on rails 在控制器中从视图传递值
我将用户输入的VIEW中的一个值传递给控制器方法,该方法反过来从DB中获取数据。下面是我认为的代码Ruby on rails 在控制器中从视图传递值,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我将用户输入的VIEW中的一个值传递给控制器方法,该方法反过来从DB中获取数据。下面是我认为的代码 <%= form_tag({:controller=>"billings", :action=>"tablebill"}, method: :get) do %> <div class="center-data">Table Number: <div class="tinput"> <%= text_field_tag(:table
<%= form_tag({:controller=>"billings", :action=>"tablebill"}, method: :get) do %>
<div class="center-data">Table Number:
<div class="tinput"> <%= text_field_tag(:tableno) %></div>
</div>
<div class="ebutton">
<%= submit_tag "Enter" %>
</div>
<% end %>
正在查询中成功传递该值,但返回的值为nil。下面是我的服务器上的代码片段
Started GET "/billings/tablebill?utf8=%E2%9C%93&tableno=08&commit=Enter" for 127
.0.0.1 at 2013-09-05 15:50:01 +0530
Processing by BillingsController#tablebill as HTML
Parameters: {"utf8"=>"√", "tableno"=>"08", "commit"=>"Enter"}
List Load (1.0ms) SELECT itemname,tableno,quantity,amount FROM `lists` WHERE
`lists`.`tableno` = '08'
Completed 500 Internal Server Error in 230ms
NoMethodError (You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.+):
app/controllers/billings_controller.rb:8:in `block in tablebill'
app/controllers/billings_controller.rb:7:in `each'
app/controllers/billings_controller.rb:7:in `tablebill'
问题是,当我在rails控制台上执行相同的查询时,它会给出结果。下面是来自rails控制台的代码片段
irb(main):073:0> @orders = List.select("itemname,tableno,quantity,amount").where(:tableno => '08')
=> [#<List tableno: "08", itemname: "test81 ", quantity: "1", amount: "
3.25">, #<List tableno: "08", itemname: "Test82", quantity: "1", amou
nt: "3.75">, #<List tableno: "08", itemname: "Test83", quantity: "1
", amount: "3.75">]
我对数据库中几乎所有的值都做了很多尝试,但每次都是通过view完成的,并且在通过rails控制台执行查询时得到了结果。我在这里发布之前已经尝试了很多,因为我认为传递值没有任何问题。只是select查询不起作用。请告知。谢谢。我不认为这是因为params[:tableno]为零,我认为这是因为您尚未初始化@totamount。然后,当您尝试将第一个order.amount添加到它时,您将得到一个错误,因为您无法添加到nil 尝试在循环之前设置@totamount=0或执行以下操作:
@totamount = order.map(&:amount).inject(&:+)
将所有金额相加。您是否检查了控制器中的参数[:tableno]中的值?是..它是08。这就是从视图传递的内容:tableno的字段类型是什么?这是一个简单的错误,我想试试这个参数[:tableno]_i@depa:它的文本值很好。我按照建议做了尝试,但现在没有给出任何错误,也没有获取值。它将转到我的方法format.html tablebill.html.erb中提到的下一页。它的显示页面,但没有填充Vlaue。而是显示“@totamount”和“@tax”,但不显示值。所以我假设这些值没有经过计算。这听起来像是你把@totamount和@tax放在你的视图中,而没有做,例如,oops。谢谢你指出这个错误。在纠正这个问题后刚刚检查过,但还是很倒霉。这次没有值。一切都是空白的。在控制台上再次检查。所有值均按预期计算。谢谢。我解决了这个问题。一切都准备好了。再次感谢你所做的一切。
@totamount = order.map(&:amount).inject(&:+)