2009-04-08 2 views
1

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

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] 

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

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

ответ

0

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

format.js {оказывают: действие => "edit.html.erb"}

+0

Я шаблон haml, так что я должен попробовать: render: action => "edit.haml"? –

+0

Просто используйте полное имя шаблона. Обычно это должен быть «action.mime.renderer», так что «edit.html.haml» должен быть как именем файла, так и тем, что вы отправляете «render» – AdminMyServer

0

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

<%= javascript_include_tag :defaults %> 
+0

Нет, я включил их всех, иначе замена не будет работать вообще. –

1

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

respond_to do |format| 
    format.html 
    format.js { render :action => "edit" } 
end 
+0

Вот как я пробовал это в начале, но это не сработало ... –

1
:script => true 

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

0

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

0

Удалить параметр обновления с вашего тега RJS. У меня там был один, и когда я пытался вставить_html, он отображал JS, возвращенный из метода, и не выполнял его в DOM. Поэтому он отображал => try {...}

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

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

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