Я использую Rails 3.0.9 и jQuery 1.6.2 с jQuery-ujs.
В основном я бы хотел ajaxfy мое действие "добавить в корзину".
В моемview:
<td><%= button_to "Add to cart", line_items_path(:coupon_id => coupon, :format => :js), :remote => true %>
В моем контроллере:
def create
@cart = current_cart
coupon = Coupon.find(params[:coupon_id])
@line_item = @cart.add_coupon(coupon.id)
respond_to do |format|
if @line_item.save
format.html { redirect_to(@line_item.cart) }
format.js {render :layout => false, :content_type => 'text/javascript'}
format.xml { render :xml => @line_item, :status => :created, :location => @line_item }
else
format.html { render :action => "new" }
format.js {render :layout => false, :content_type => 'text/javascript'}
format.xml { render :xml => @line_item.errors, :status => :unprocessable_entity }
end
end
end
Я также создал create.js.erb:
$("#my_cart").html("<%= escape_javascript(render(:partial => 'layouts/mycart')) %>");
для обновления номера элемента корзины при добавлении нового элемента.
Когда я нажимаю кнопку «добавить в корзину», на сервер отправляется запрос JS POST:
Started POST "/line_items.js?coupon_id=1" for 127.0.0.1 at Thu Aug 18 00:04:31 +0800 2011
Processing by LineItemsController#create as JS
И ответ от сервера:
Rendered layouts/_mycart.html.erb (5.3ms)
Rendered line_items/create.js.erb (28.9ms)
Completed 200 OK in 127ms (Views: 58.7ms | ActiveRecord: 3.0ms)
В теле ответа содержится код javascript для обновления моей корзины:
$("#my_cart").html("<li id=\"my_cart\"><a href=\"/carts/10\">My cart(1)<\/a>\n<\/li>");
Однако веб-страница не обновляется.Я пробовал разные браузеры (Chrome, Firefox, Safari).Но если я вручную запустил этот код в консоли Firebug, страница обновилась.Я погуглил один день и попробовал разные решения.Никто из них не работал со мной.Может ли кто-нибудь решить мою проблему?
Вот код, сгенерированный для button_to:
<form method="post" action="/line_items.js?coupon_id=1" data-remote="true" class="button_to"><div><input type="submit" value="Add to cart" /><input name="authenticity_token" type="hidden" value="MdHScf0JVNu2UFXLxuindDvZ5TPBztfMMzv57w1LWX8=" /></div></form>