これは複雑な質問ですが、できる限りお手伝いします。まず、次のようなテキスト フィールドをフォームに追加することをお勧めします。
show.html.erb:
<%= form_tag({:controller => "cart_items", :action => :create}, {:method => :post, :remote => true}) do %>
<%= text_field_tag :product_name, product.name %>
<%end%>
レールに ajax 呼び出しを強制する :remote=> true に注意してください
その後、コントローラーでそのリクエストを処理する必要があるため、次のようになります。
def create
if @current_cart==nil
@current_cart = Cart.create!
@current_cart.save
session[:cart] = @current_cart.id
end
@product = Product.find_by_name(params[:product_name])
@current_cart.add(@product, @product.price)
respond_to do |format|
format.js {redirect_to :back, :notice => "added"}
format.html {redirect_to :back, :notice => "added"}
end
end
その後、次のような ajaxt 応答を処理するための JavaScript が必要になります。
show.js.erb:
$('.cart').replaceWith('<%= j render :partial => "layouts/cart"%>');
交換するにはカートパーシャルが必要です:
レイアウト/_cart.html.erb:
<%@current_cart.each do |c| %>
<%=c.product.name%>
<%end%>
私は簡単な答えで表面をなぞっただけですが、方向性のある乾杯が見つかるかもしれません