Rails: обновление link_to_remote не отображает представление - PullRequest
1 голос
/ 08 апреля 2009

У меня есть link_to_remote для визуализации действия редактирования объекта. Но все, что он делает, это обновляет Dom Domment этим ответом

try { } catch (e) { alert('RJS error:\n\n' + e.toString()); alert(''); throw e }

Моя ссылка выглядит так:

= link_to_remote t("txt.edit"), :update => dom_id(comment), :url => edit_comment_path(comment.id)

Мое действие редактирования в контроллере комментариев:

  # GET /comments/1/edit
  def edit
    @comment = Comment.find(params[:id])
    respond_to do |format|
      format.html
      format.js { render :action => "edit" }
    end
  end

Запрос, кажется, в порядке, согласно журналу:

Processing CommentsController#edit (for 127.0.0.1 at 2009-04-08 18:55:36) [GET]
  Session ID: 1d4b9b3d3319d5cd556d00d2e053b651
  Parameters: {"authenticity_token"=>"5d70f9e5beded361ee7e87ee591512411e8f3eec", "id"=>"18"}
  User Columns (2.0ms)   SHOW FIELDS FROM `users`
  User Load (0.5ms)   SELECT * FROM `users` WHERE (`users`.`id` = 1) LIMIT 1
  Account Columns (1.6ms)   SHOW FIELDS FROM `accounts`
  Account Load (0.2ms)   SELECT * FROM `accounts` WHERE (`accounts`.`subdomain` = 'xxx') LIMIT 1
  Comment Columns (1.7ms)   SHOW FIELDS FROM `comments`
  Comment Load (0.6ms)   SELECT * FROM `comments` WHERE (`comments`.`id` = 18) 
Rendering comments/edit
Completed in 30818ms (View: 2, DB: 7) | 200 OK [http://xx.xxx.rails/comments/18/edit?authenticity_token=5d70f9e5beded361ee7e87ee591512411e8f3eec]

Что я делаю не так? Спасибо за помощь!

UPDATE: Он работает, кстати, с шаблоном RJS - вот как я решил это сейчас. Но я все еще предпочитаю решение, в котором отображается представление. В противном случае мне нужно создать частичное только для этой цели (я не могу отображать представления с обновлениями страницы rjs - по крайней мере, я не знаю как).

Ответы [ 6 ]

1 голос
/ 26 июня 2009
:script => true

Добавьте это к вызову link_to_remote, и это должно заставить rails оценивать все возвращаемые скрипты, а не выводить их в виде простого текста.

1 голос
/ 09 апреля 2009

Или вообще не перехватывать «reply_to», так как в обоих случаях вы делаете то же самое! Просто закомментируйте:

respond_to do |format|
  format.html
  format.js { render :action => "edit" }
end
0 голосов
/ 02 августа 2010

Удалите опцию: update из вашего тега RJS. У меня там был один, и когда я пытался вставить insert_html, он отображал JS, возвращенный методом, а не выполнял его в DOM. Так что это показывало => try {...}

Я взял атрибут: update из моего оператора link_to_remote, на мой взгляд, использовал Блок render: update do |page| page.insert_html(...) end и он выполнил возврат JS вместо его отображения.

Надеюсь, это поможет.

0 голосов
/ 18 ноября 2009

Когда вы отвечаете на js-запрос, render :action => "edit" попытается отобразить edit.rjs, шаблон rjs, а не edit.haml, HTML-шаблон.

0 голосов
/ 09 апреля 2009

Похоже, вы, возможно, забыли включить ссылку на библиотеки Javascript в свои представления, и представление отображает буквальный JavaScript вместо интерпретации.

<%= javascript_include_tag :defaults %>
0 голосов
/ 09 апреля 2009

Одна вещь, которую вы не упомянули, это то, что шаблон ... Я думаю, в этом проблема. Если это ERB, попробуйте что-то вроде:

format.js {render: action => "edit.html.erb"}

...