【问题标题】:Add a modal dialog into Rails?在 Rails 中添加模式对话框?
【发布时间】:2011-09-02 10:04:26
【问题描述】:

我想在我的应用程序中添加一个 Ajax 链接。当我单击链接时,它应该会弹出一个包含事件详细信息的模式对话框。 我在我的助手类中添加了这个链接。

 link_to(event.name, events_path(@event), :remote => true 

然后我创建 js 文件以将内容插入隐藏的 div。

$('.modal').html(<%= escape_javascript(render(@event)) %>); 
$('.modal').dialog(); 

这里的模态是我隐藏的 div。但它无法弹出任何模态对话框。我无法理解错误是什么以及为什么它不起作用。请问有人能帮我改正吗?

【问题讨论】:

    标签: ruby-on-rails jquery modal-dialog


    【解决方案1】:

    改变

    $('.modal').html(&lt;%= escape_javascript(render(@event)) %&gt;);

    $('.modal').html("&lt;%= escape_javascript(render(@event)) %&gt;");

    从 JS 的角度来看,您的代码将是无效的,因为您没有将渲染用引号括起来,它会尝试评估您的 HTML。

    编辑

    如果您试图通过show 点击链接到此,您需要使用show.js.erb 来显示您的模态对话框,而不是create.js.erbcreate 只会在您将 POST 表单发送到 /events 时才会被调用,而这里看起来您只是想显示事件的详细信息。

    将上面的代码(带引号)放在show.js.erb 中,确保在控制器上的show 方法中有respond.js 响应,然后再试一次。

    【讨论】:

    • 谢谢......但它仍然没有工作。没有错误。但它没有弹出模态对话框。
    • 我已经编辑了上面的回复,您的问题可能是由于使用了错误的操作。
    • 当我这样做时,我得到了以下输出.. $('.modal').html("

      \n Name:\n Ruby\n\n\n

      \n 开始于:\n 2011-08-30 00:00:00 UTC\n\n\n

      \n 结束于:\n 2011-09-01 00:00:00 UTC\n\n

      \n 培训师:\n Aaaa\n\n\n

      \n 地点:\n Abc 公司\n\n\n\n\n\ n"); $('.modal').dialog();没有加载模式对话框。它呈现部分的详细信息。但它显示在 show.js.erb

    • 好的。听起来它正在将您的响应评估为 HTML 或纯文本而不是 JS。你用的是什么版本的 Rails?您是否偶然使用rails_ujs?你能告诉我你对show 的控制器操作吗?特别是respond_to 块?您是否还可以仔细检查您的控制台/日志文件,您应该有类似的内容:Processing by EventsController#show as JS 就在来电时;告诉我as XX 是什么。
    • 我使用的是 rails 2.3.8 版本。 respond_to 做 |格式| format.js 结束时,日志文件中没有任何内容,因为 EventsController#show 处理
    【解决方案2】:

    您可能没有安装 Jquery,因为 rails 默认是 Prototype 库。我会升级到 Rails 3.1,这样可以轻松使用 jquery:

    rails new example -j jquery

    或安装 jquery: http://railscasts.com/episodes/136-jquery

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 2015-04-21
      相关资源
      最近更新 更多