gpt4 book ai didi

jquery - 在 jquery 对话框中使用 Rails 部分

转载 作者:行者123 更新时间:2023-12-03 22:31:17 26 4
gpt4 key购买 nike

我正在尝试将部分内容插入 jquery 对话框中。对话框可以工作,但不完整。

这是我的代码:

application.js

$(document).ready(function(){
$("#add_note").click(function(){
$("#notes").html("<%= escape_javascript(render(:partial => @note)) %>").dialog({title: 'Basic Dialog'})
})
})

我的观点

<div class="title">
<span>Historique :</span>
<span id="add_note">Ajouter une note</span>
</div>

<div id="notes">
</div>

我的部分在 myview/_note.html.erb

<div class="note">
<%= form_for(@add_note) do |f| %>
<dl>
<dt>Type de note</dt>
<dd><%= f.collection_select :note_type_id, NoteType.find(:all), :id, :label, :allow_blank => "Type" %></dd>
</dl>
<dl>
<dt>Titre :</dt>
<dd><%= f.text_field :title %></dd>
</dl>
<dl>
<dt>Description :</dt>
<dd><%= f.text_field :description %></dd>
</dl>
<%= f.hidden_field :project_id, :value => @project_id %>
<%= f.hidden_field :organization_id, :value => @project.organization_id %>
<%= f.hidden_field :user_create_id, :value => current_user.id %>
<%= f.hidden_field :domain_id, :value => current_user.domain_id %>
<%= f.hidden_field :created_at %>

<div class="actions">
<%= f.submit %>
</div>
<% end %>

如果您有线索,那将会非常有帮助!谢谢

法比安

最佳答案

application.js文件是静态 JavaScript 的地方。它不会传递给 ERB 来处理每个请求,因此您的 <%= code %>永远不会运行。如果您将浏览器指向 /javascripts/application.js你就会明白我在说什么。

确保您很好地掌握了 Rails 中请求的处理方式。您可能会在这里遗漏一些细节。 application.js是一个静态文件,存在于/public/javascripts中目录,因此它直接由您的网络服务器提供;当浏览器获取它时,Rails 甚至不会被触及。就像当你创建一个新的 Rails 应用程序时,你必须删除 /public/index.html在 Rails 可以处理您的 map.root 之前文件在routes.rb文件中。

您有几种不同的选择:

Here是较旧的 Railscast 剧集,但它似乎很接近您正在寻找的内容。它使用名为 javascripts_controller 的 Controller 用于生成动态 javascript。这不是一个非常细粒度的方法。

this episode ,Ryan 用于为嵌套模型添加字段的方法可以进行调整以满足您的需求。这个方法我用过几次,效果非常好。

推荐方法

您还可以调用一个通过 ajax 返回部分 h​​tml 的操作,并将结果使用到 $(#notes).html(result) 。快速搜索rails jquery ajax提供了一些关于如何实现这一点的指南(Here 是一个看起来合理的指南)。 Here是另一个处理 jQuery 和 Rails 2 的 Railscast 剧集。此时我不建议使用 jRails,因为它已经过时了,并且正如该剧集提到的,它有点违背了切换到 jQuery 的目的,因为 Rails 2 帮助程序会产生干扰JavaScript。

这是一种灵活的做事方式。您有一组通用的静态 JavaScript 用于调用远程方法。在单独的 Controller 方法中,您可以 respond_to这些 ajax 调用并返回带有动态数据、html 或 JSON 的 JavaScript。

this section 中列出了 jQuery 中用于查看 ajax 的方法。 jQuery API 的。 $.ajax $.post$.get是主要的。

对于您的示例,$.get将是一个很好的起点。以下是来自 api 文档的示例:

$.get('ajax/test.html', function(data) {
$('.result').html(data);
alert('Load was performed.');
});

Here是关于 Rails 3 如何处理不显眼的 JavaScript 以及 HTML5 自定义属性的 Railscast。您可以在 Rails 2 中模仿这种方法,但标准辅助方法不会生成 data-remote , data-method , data-disable-with ,或其他data-*给你的属性。你可以在jQuery version中看到Rails 3 ujs 的,它最像我之前提到的方法,其中使用 $.ajax 调用 Controller 方法。并根据数据类型(默认为“脚本”)以不同方式处理响应。

关于jquery - 在 jquery 对话框中使用 Rails 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3099803/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com