无法从 Rails 控制器渲染 JavaScript

发布于 2024-09-01 11:37:15 字数 367 浏览 6 评论 0原文

当用户在表单中输入无效内容时,我想显示一个带有错误消息的模式窗口,但如果一切正常,则呈现另一个操作。但是,当我尝试显示模式窗口时,

render :js => "jQuery.facebox(#{...})"

仅显示调用的实际 JavaScript:

try {
  jQuery.facebox(...)
} catch (e) { alert('RJS error:\n\n' + e.toString());
  alert('jQuery.facebox(\"<div class=\'error\'>Error</div>\")');
  throw e;
}

I want to display a modal window with an error message, when the user has entered something invalid in a form, but render another action if everything is OK. However, when I try to display the modal window with

render :js => "jQuery.facebox(#{...})"

only the actual JavaScript called is displayed:

try {
  jQuery.facebox(...)
} catch (e) { alert('RJS error:\n\n' + e.toString());
  alert('jQuery.facebox(\"<div class=\'error\'>Error</div>\")');
  throw e;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清泪尽 2024-09-08 11:37:15

您是否尝试过将代码放在部分中?因此,不要

render :js => "jQuery.facebox(#{...})"

尝试

render :partial => "my_facebox_popup" 

然后在您的 _my_facebox_popup.html.erb 部分中放置您的代码:

<script type = "text/javascript">
...
</script>

调试使用

Have you tried putting the code in a partial? So instead of

render :js => "jQuery.facebox(#{...})"

try

render :partial => "my_facebox_popup" 

Then inside of your _my_facebox_popup.html.erb partial put your code:

<script type = "text/javascript">
...
</script>

debug any errors you get with firebug.

沐歌 2024-09-08 11:37:15

试试这个

 render :update do|page|
   page <<  "jQuery.facebox(#{...})"
 end

Try this

 render :update do|page|
   page <<  "jQuery.facebox(#{...})"
 end
倾`听者〃 2024-09-08 11:37:15

也许您应该在 jQuery 调用中指定您正在等待的响应的数据类型。

例如:

$.ajax({ 
  url: "/controller/action/id", 
  success: function(){
    $(this).addClass("done");
  },
  dataType: 'script' 
});

Maybe you should specify in the jQuery call the dataType of the response you're waiting for.

E.g.:

$.ajax({ 
  url: "/controller/action/id", 
  success: function(){
    $(this).addClass("done");
  },
  dataType: 'script' 
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文