2013-02-14 5 views
0

Я пытаюсь создать Ajax-решение для интернет-магазина. Итак, у меня есть Корзина, и когда пользователь что-то добавляет, я хочу, чтобы все страницы не перезагружались, а только шаблон «Корзина». (Line Item принадлежит Корзине) Создать метод в линии Предмете:Шаблон Javascript Rails не работает должным образом

#usualstuff 
respond_to do |format| 
if @line_item.save 
format.html { redirect_to(store_url) } 
format.js 
format.xml { render :xml => @line_item, 
:status => :created, :location => @line_item } 
else 
... 

Поместите файл create.js в/просмотрах/line_items

Так вот проблема.

На самом деле это работает. Но когда я нажимаю кнопку «Добавить в корзину», ничего не меняется, пока я не перезагружу страницу.

На журнале сервера отображается:

Rendered line_items/create.js (0.0ms) 

0.0ms -для уверен, что означает что-то не так, но я не могу figuare это. Похоже, рельсы просто открывают его и ничего не делают.

В чем причина?

Код в create.js

page.replace_html('cart' , render(@cart)) 
+0

было бы можно видеть Аякс вызов вы делаете вместе с функцией успеха? –

+0

Я совершенно nooby, поэтому не уверен, что у меня все получилось. –

+0

<% = button_to 'Добавить в корзину', line_items_path (: product_id => product), : remote => true%> –

ответ

0

Так .js/.rjs шаблон не работает в рельсах> 3.0, должно быть .js.erb

0

вам все еще нужно написать фактический запрос Аякса в JavaScript или JQuery вызвать метод на контроллере для обновления дисплея.

ruby ​​- это серверный язык, поэтому вам нужно сделать ajax-вызов для сервера, чтобы получить данные, которые вы хотите использовать для обновления вашей страницы.

проверить это post, они, кажется, делают что-то похожее на то, что вы есть, это может быть полезно. если вы не знаете, что такое ajax, посмотрите на это link.

надеюсь, что это поможет несколько.

+0

На самом деле проблема заключалась в том, что я использовал учебник для предыдущей версии Rails, прежде чем они заставили jq вместо usuall js –

Смежные вопросы