我试图在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/_Not.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 %>如果你有线索的话,那会很有帮助的!谢谢
法比安
发布于 2010-06-23 08:05:04
application.js文件是静态JavaScript的位置。它不会传递给ERB对每个请求进行处理,因此您的<%= code %>永远不会运行。如果你把浏览器指向/javascripts/application.js,你就会明白我在说什么。
确保您能够很好地处理Rails中的请求。你可能漏掉了一些细节。application.js是一个存在于/public/javascripts目录中的静态文件,因此它直接由您的web服务器提供;当浏览器获取Rails时,Rails甚至不会被访问。这就像您创建了一个新的rails应用程序,在Rails能够在/public/index.html文件中处理您的map.root之前,您必须删除routes.rb文件。
你有几种不同的选择:
这里是一个较老的铁路插曲,但它似乎接近你正在寻找的东西。它使用一个名为javascripts_controller的控制器生成动态javascripts。这不是一个非常细粒度的方法。
在这一集中,Ryan用于为嵌套模型添加字段的方法可以根据您的需要进行调整。我用过几次这种方法,效果很好。
推荐方法
您还可以通过ajax调用一个返回部分的html的动作,并将结果使用到$(#notes).html(result)。对rails jquery ajax的快速搜索提供了一些关于如何实现这一点的指南(这里似乎是合理的)。这里是处理jQuery和Rails 2的另一集。我不建议在这一点上使用jRails,因为它已经相当过时了,正如这一集所提到的那样,当Rails 2帮助程序生成突出的JavaScript时,它的目的有点失败。
这是一种灵活的做事方式。您有一组通用的静态JavaScript,用于调用远程方法。在单个控制器方法中,您可以至这些ajax调用,并使用动态数据、html或JSON返回JavaScript。
jQuery中用于ajax的方法在jQuery api的本节中列出。$.ajax、$.post和$.get是主要研究对象。
就您的例子而言,$.get将是一个很好的起点。下面是api文档中的一个示例:
$.get('ajax/test.html', function(data) {
$('.result').html(data);
alert('Load was performed.');
});这里是Rails 3如何处理非突出的JavaScript以及HTML5自定义属性的Railscast。您可以在Rails 2中模拟这种方法,但是标准的助手方法不会为您生成data-remote、data-method、data-disable-with或其他data-*属性。您可以在Rails 3 ujs的jQuery版本中看到,它最像前面提到的方法,其中使用$.ajax调用控制器方法,并根据dataType (默认情况下是“脚本”)以不同的方式处理响应。
发布于 2011-02-28 05:32:16
在我看了Rails转换和文档之后,我做的最好的方法是遵循这一点,看看现实世界的例子,并将其调整到我需要的地方。因此,如果您确实使用Ajax路由( Awgy所建议的)并想要更多的示例,那么除了InfectiouSoul的链接(来自同一个站点)之外,这里还有一个链接,这个链接显示了一个使用ajax请求的对话框示例。
http://jenwendling.com/fancy-forgot-password-with-jqueryui-and-rails/
https://stackoverflow.com/questions/3099803
复制相似问题