这是FeesController“显示”操作模板中的视图代码:

<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" %>


然后单击“新付款人”链接,它在“ payers_controls” DIV中向我呈现普通的JS:

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标签中?
我是否需要在页面中使用SCRIPT标签创建另一个隐藏的占位符,以进行JS响应?

附言请理解我的愤怒,因为我是Rails的AJAX的新手,我想成为一名学究的程序员,并且,我希望我的代码看起来干净利落。

最佳答案

问题是您试图使用JS两次更新内容。

我将从您的link_to_remote标记中删除:update参数,或删除RJS模板。

基本上,Rails使用RJS模板更新页面一次,然后使用link_to_remote中的:update回调再次更新页面。您不需要两者。由于最好在您的视图中保留尽可能少的代码,因此我将其删除并保留RJS模板。

希望这可以帮助。还有什么,让我知道。

肯特郡

关于ruby-on-rails - RJS返回不带JS标签的普通javascript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2039591/

10-10 23:29