2010-01-11 3 views
2

Вот код на просмотр в FeesController "шоу" шаблон действий:RJS возвращает простой JavaScript без тегов JS

<div id="payers_controls"> 
     <%= link_to_remote('New payer', 
           :update => "payers_controls", 
           :url => new_payer_url) 
     %> 
</div> 

Вот new.rjs - принадлежит PayersController "новый" действие

page.replace_html "payers_controls", :partial => "form", :object => @payer 

Вот «новое» действие в PayersController

def new 
    @payer = Payer.new(params[:payer]) 
    end 

Здесь «форма» частичное для «новых» действий в PayersController

<%= "Damn text to see if this damn partial is rendered properly" %> 

А потом нажмите «Новый плательщик» ссылку, он оказывает мне простые JS внутри «payers_controls» DIV:

try { Element.update("payers_controls", "Damn text to see if this damn partial is rendered properly"); } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('Element.update(\"payers_controls\", \"Damn text to see if this damn partial is rendered properly\");'); throw e } 

И почему, черт возьми, этот проклятый ответ не заключен в теги SCRIPT? Должен ли я создать еще один скрытый placeholder с тегами SCRIPT на странице для ответов JS?

P.S. Пожалуйста, поймите мою ярость, потому что я новичок в AJAX на Rails, я хочу быть программистом-педантом и, черт возьми, я хочу, чтобы мой код выглядел красиво и чисто.

ответ

3

Проблема в том, что вы пытаетесь дважды обновить содержимое с помощью JS.

Я бы удалил параметр update из тега link_to_remote или удалил шаблон RJS.

В основном Rails обновляет страницу один раз с использованием шаблона RJS, затем он обновляет его снова, используя обратный вызов: update от link_to_remote. Вам не нужны оба. Поскольку для ваших взглядов лучше использовать как можно меньше кода, я бы удалил его и сохранил шаблон RJS.

Надеюсь, это поможет. Что-нибудь еще, просто дай мне знать.

Kent

+0

Это было проницательным. Большое спасибо. Кажется, мне нужно немного поспать. P.S. Stackoverflow - это своеобразное употребление для таких быстрых ответов: D – BlackTea

+0

Ха-ха. Нет проблем! Я знаю, что это расстраивает насчет JS и Rails ... дьявола в деталях. Удачи вам в проекте Rails. – ewakened

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