如何将值从html中的输入类型传递给rails中的控制器

时间:2017-07-26 06:10:04

标签: html ruby-on-rails

我是初学者的html和ruby on rails。这听起来是一个非常基本的问题,但经过多次尝试后,我无法理解如何将值从输入类型传递给控制器​​。

这是我的代码 -

<div style = "border:1px solid black; padding:1em;">
    <%= link_to product.name, product_path(product.id) %>
    <br><br>

    Price : <%= product.price %>

    Quantity : <input type="text" name='quantity' value = '1' min ='1'/>
    <br><br>

    <% if session[:cart_id] && @cart_item_ids.include?(product.id) %>
    <button><%= link_to 'Remove', remove_item_path(:product_id => product.id)
    %></button>
    <% elsif session[:cart_id] %> 
    <button><%= link_to 'Add To Cart', add_to_cart_path(:product_id => product.id, :price => product.price, :quantity => 'quantity')
    %></button>
    <% end%>
  <br>
</div>

这是我的控制器

class CartsController < ApplicationController

  def add_to_cart
    byebug
    cart_item = CartItem.new
    cart_item.product_id = params[:product_id]
    cart_item.quantity = 1
    cart_item.price = params[:price]
    cart_item.cart_id = session[:cart_id]
    cart_item.save

    product = Product.find(params[:product_id])
    category = Category.find(product.category_id)

    redirect_to category_path(:id => product.category_id)
  end

  def remove_item
    CartItem.where(:cart_id =>  session[:cart_id]).where(:product_id => params[:product_id]).first.destroy
    product = Product.find(params[:product_id])
    redirect_to category_path(:id => product.category_id)
  end

  def view_cart
    cart = Cart.where(:consumer_id => session[:consumer_id]).first
    @cart_items = CartItem.where(:cart_id => cart.id)
    render 'show'
  end

end

提前致谢。

1 个答案:

答案 0 :(得分:1)

您需要使用form发布数据,或者需要使用一些异步Javascript请求来发布数据。