首页 > 解决方案 > 从表单标签访问 params 值以显示视图

问题描述

这是一个非常基本的问题:我想在我的视图中显示数量值,来自 form_tag 输入,但我有哈希值。

 <%= form_tag order_items_path do %>
    <%= hidden_field_tag 'product_id', @product.id %>
    <%= number_field(:quantity, in: 1.0..20.0, step: 1) %>
    <%= submit_tag 'Add to cart', class: 'btn btn-primary' %>
  <% end %>

order_items 控制器

定义创建

@product = Product.find(params[:product_id])

if current_user.orders.find_by(state: 'pending')
  OrderItem.create!(product: @product, quantity: (params[:quantity]), order: current_user.orders.find_by(state: 'pending'))
else
  order = Order.create!(user: current_user, state: 'pending')
  OrderItem.create!(product: @product,  quantity: (params[:quantity]), order: current_user.orders.find_by(state: 'pending'))
end
respond_to do |format|
  format.html { redirect_to root_path }
  format.js
end

当我尝试在我的订单视图中显示它时,我有什么:

  <% @order.order_items.each do |item| %>
  <div id="order-item-id-<%=item.id%>">
    <div class="container mt-4 d-flex justify-content-between align-items-center" >
      <div>
        <%= item.product.name %>
        <%= item.quantity %>
      </div>

是来自 form_tag 的哈希:

埃塞俄比亚 {"{:in=>1.0..20.0, :step=>1}"=>"1"}

我尝试了很多解决方案,例如数量:(params[:quantity].value),但没有任何效果。有人帮忙吗?

标签: ruby-on-railsrubyparameters

解决方案


好像你误number_field用了number_field_tag. 只是改变

<%= number_field(:quantity, in: 1.0..20.0, step: 1) %>

<%= number_field_tag(:quantity, nil, in: 1.0..20.0, step: 1) %>

请注意,nil这是该字段的初始值,您可能希望使用1其他数字来代替。


推荐阅读