【发布时间】:2011-07-15 17:42:48
【问题描述】:
我在使用 rails3 渲染 Javascript 时遇到问题(如果这是相关的,我使用 JQuery,它工作正常,因为它在应用程序的许多其他部分中使用)而不是 html。
我有什么: 我一个观点,我有这个链接:
<%= link_to 'Edit', edit_user_repreneur_path(@user_repreneur, :format => :js), :remote => true %>
首先,我真的不明白为什么我必须添加 :format => :js 来让控制器使用 JS 视图,而不是 HTML 视图。 这是控制器的代码:
def edit
@user_repreneur = UserRepreneur.find_by_id_view(params[:id])
respond_to do |format|
format.js
format.html
end
end
在控制器类的开头,我有这行:
respond_to :js, :html
我的 edit.js.erb 文件包含带有警报的单行。 但是,在渲染页面时,JS 被渲染为文本,因此不会被执行。 我试图将 format.js 行更改为
format.js { render :layout => false }
但它不会改变任何东西。 我想我错过了一些东西,但我真的看不到什么......
提前非常感谢,干杯!
PS:我不知道这是否有帮助,但在我的链接助手中添加 :format => :js 位之前,视图总是呈现为 HTML,如果我注释了 format.html 行,我在服务器端遇到了 406 Not Acceptable 错误。
【问题讨论】:
-
真的是通过ajax请求发送的吗?您可以在控制台或萤火虫控制台中检查
-
在控制器的开头有 respond_to :js, :html 意味着你期望在你的操作中使用 respond_with(而不是 respond_to)。我想知道这种冗余是否会导致问题 - 您是否尝试过擦除控制器中的第一行?您也不需要将 :format => :js 添加到视图中
-
在 chrome 控制台中,当我单击链接时,我看到一个 GET 请求,其中包含 304 响应代码和 text/javascript 类型。此外,评论控制器中的行不会改变任何东西,但感谢您提供的信息:)!我知道我不需要在视图中指定格式,否则它总是呈现 HTML ......奇怪。
-
它已加载,但在 jquery.js 之前,因此无法正常工作。非常感谢!
-
嗨?我在哪里可以找到加载 rails.js 的地方?哪里是这样做的正确地方?
标签: jquery ruby-on-rails ajax