Страница обновления Rails без прототипа? - PullRequest
0 голосов
/ 06 июля 2011

Я пытаюсь (все еще) получить ajaxful-rating для работы с моей установкой rails. Я не устанавливал свое приложение с прототипом, потому что мне нравится jQuery.

Учебник (и все остальные) сказал использовать это, чтобы сделать обновление

render :update do |page|
  page.replace_html id, ratings_for(@entry, :wrap => false, :dimension => params[:dimension])
  page.visual_effect :highlight, id
end

Однако я получаю «неопределенную локальную переменную или метод« id »... Я могу заставить гем работать без ajax , выполнив стандарт:

respond_to do |format|
  format.html { redirect_to @entry }
  format.js { render :layout => false}
end

Полагаю, я всегда мог просто сделать вызов jQuery.ajax, но я хотел бы реализовать это как можно более тесно в моем приложении rails - я хочу научиться делать это правильно. :)

Пожалуйста, пожалуйста, помогите. Я определенно прибегаю к просьбе о помощи.

Ответы [ 2 ]

1 голос
/ 06 июля 2011

id должен быть идентификатором dom элемента оценок, который вы пытаетесь заменить новыми рейтингами.Посмотрите, что такое id, и замените id в своем коде этой строкой.

Вы также можете написать код JS вручную, не полагаясь на RJS.

Что-то вроде этого

$("#YOUR_ID_HERE").html("<%= escape_javascript ratings_for(@entry, :wrap => false, :dimension => params[:dimension]) %>");
$("#YOUR_ID_HERE").effect("highlight");

Поместите этот код в ваше представление, назовите его your_action.js.erb (конечно, замените your_action именем вашего действия).Тогда ваш стандартный блок response_to должен работать

1 голос
/ 06 июля 2011

Я не пробовал, так как я предпочитаю отделить все (то есть страница должна работать без зависимости от javascript), но взгляните на плагин jquery rails http://rubygems.org/gems/jquery-rails

Он может делать то, что вы хотите, так как предполагается, что он будет полной заменой прототипа.

Однако ошибка звучит так, как будто вы пропустили некоторую инициализацию.Попробуйте использовать params[:id] вместо.

...