这是我的代码:
的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 %>
如果您有线索,那将非常有帮助!
谢谢
法比恩
解决方法
确保您能够很好地处理在Rails中处理请求的方式.您可能在这里遗漏了一些细节. application.js是一个存在于/ public / javascripts目录中的静态文件,因此它由Web服务器直接提供;当浏览器获取Rails时,Rails甚至不会被触及.就像你创建一个新的rails应用程序一样,你必须在raails可以处理routes.rb文件中的map.root之前删除/public/index.html文件.
你有几个不同的选择:
Here是一个较旧的Railscast剧集,但它似乎接近你正在寻找的.它使用名为javascripts_controller的控制器来生成动态javascripts.这不是一个非常精细的方法.
在this episode中,Ryan用于为嵌套模型添加字段的方法可以根据您的需要进行调整.我已经使用过这种方法几次,效果很好.
推荐方法
您还可以通过ajax调用返回partial的html的操作,并将结果用于$(#notes).html(result).快速搜索rails jquery ajax提供了一些如何实现这一点的指南(Here是一个看似合理的指南). Here是另一个处理jQuery和Rails 2的Railscast剧集.我不建议在这一点上使用jRails,因为它已经过时了,正如剧集所提到的那样,它有点像Rails 2助手生成时切换到jQuery的目的突兀的JavaScript.
这是一种灵活的做事方式.您有一组用于调用远程方法的通用静态JavaScript.在单个控制器方法中,您可以respond_to这些ajax调用并返回带有动态数据,html或JSON的JavaScript.
在jQuery api的this section中列出了jQuery中查看ajax的方法. $.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中模仿这种方法,但标准辅助方法不会为您生成数据远程,数据方法,数据禁用或其他数据*属性.你可以在Rails 3 ujs的jQuery version中看到它最像我之前提到的方法,其中使用$.ajax调用控制器方法,并根据dataType(默认情况下为’script’)处理响应.