-6ren">
gpt4 book ai didi

ruby-on-rails - RJS 返回没有 JS 标签的普通 javascript

转载 作者:行者123 更新时间:2023-11-29 20:24:14 25 4
gpt4 key购买 nike

这是在 FeesController“显示”操作模板中查看的代码:

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

这是 new.rjs - 属于 PayersController 的"new" Action

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

这是 PayersController 中的"new"操作

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

这是 PayersController 中"new"操作的“表单”部分

   <%= "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 标签中?我是否需要在页面中为 JS 响应创建另一个带有 SCRIPT 标记的隐藏占位符?

附言请理解我的愤怒,因为我是 AJAX on Rails 的新手,我想成为学究式的程序员,我希望我的代码看起来漂亮干净。

最佳答案

问题是您正在尝试使用 JS 更新内容两次。

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

基本上,Rails 使用 RJS 模板更新页面一次,然后使用来自 link_to_remote 的 :update 回调再次更新页面。你不需要两者。由于最好在您的 View 中保留尽可能少的代码,我会在那里删除它并保留 RJS 模板。

希望这对您有所帮助。其他任何事情,请告诉我。

肯特

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

25 4 0