PXF_LY's Blog

新手答疑:add_to_cart_product_path(@product), :method => :post翻译

问题: <%= link_to (“加入购物车”,add_to_cart_product_path(@product), :method => :post, :class => "btn btn-primary btn-lg btn-danger")%>翻译这句。
@product 什么时候加@,@是什么意思?=>是什么意思?

  • 这是products/show页面的

<div class="pull-right"
<%= link_to("加入购物车", add_to_cart_product_path(@product), :method = :post, :class = "btn btn-primary btn-lg btn-danger") %
</div

翻译:做出一个“加入购物车”的按钮

1-按钮上写“加入购物车”
2-告诉他发送的路径add_to_cart_product_path(@product)

add_to_cart是在product_controller中定义的action

def add_to_cart
@product = Product.find(params[:id]
current_cart.add_product_to_cart(@product)
flash[:notice] = "测试加入购物车“
redirect_to :back
end

@ 有each at的意思,是总体里面的每一个

routes中加入路劲:

resources :products do
member do
post :add_to_cart
end
end

3- :method => :post,

常見的六種HTTP Method分別是head,get,post,delete,put,patch。
head:和get一樣,只是head只會取的HTTP header的資料。
get:取得我們想要的資料。
post:新增一項資料。(如果存在會新增一個新的)
put:新增一項資料,如果存在就覆蓋過去。(還是只有一筆資料)。
patch:附加新的資料在已經存在的資料後面。(資料必須已經存在,patch會擴充這項資料)
delete:刪除資料。

我们做练习时,经常会碰到诸如
:class=和class:
:method=和method:
等这样的书写类型
它们是等价的

:method = :post,等价于method : :post
:class = "btn btn-primary btn-lg btn-danger”等价于 class: :"btn btn-primary btn-lg btn-danger”

4-btn的样式

https://www.w3schools.com/bootstrap/bootstrap_buttons.asp