在jquery对话框中使用rails部分

Fab*_*ien 8 jquery ruby-on-rails ruby-on-rails-3

我正在尝试将部分插入到jquery对话框中.对话框正在运行,但没有部分..

这是我的代码:

的application.js

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

我的看法

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

      <div id="notes">
      </div>
Run Code Online (Sandbox Code Playgroud)

在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 %>
Run Code Online (Sandbox Code Playgroud)

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

法比恩

Awg*_*wgy 10

application.js文件是静态JavaScript的位置.它不会传递给ERB以便对每个请求进行处理,因此您<%= code %>永远不会运行.如果您将浏览器指向/javascripts/application.js您将看到我正在谈论的内容.

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

您有几个不同的选择:

是一个较旧的Railscast剧集,但它似乎接近你正在寻找的.它使用一个名为javascripts_controller生成动态javascripts 的控制器.这不是一个非常精细的方法.

本集中,Ryan用于为嵌套模型添加字段的方法可以根据您的需要进行调整.我已经使用过这种方法几次,效果很好.

推荐方法

您还可以通过ajax调用返回部分html的操作,并使用结果$(#notes).html(result).快速搜索rails jquery ajax提供了一些如何实现这一点的指南(是一个看似合理的指南). 是另一个处理jQuery和Rails 2的Railscast剧集.我不建议在这一点上使用jRails,因为它已经过时了,正如剧集中提到的那样,它有点像Rails 2助手生成时切换到jQuery的目的突兀的JavaScript.

这是一种灵活的做事方式.您有一组用于调用远程方法的通用静态JavaScript.在单个控制器方法中,您可以响应这些ajax调用并使用动态数据,html或JSON返回JavaScript.

在jQuery api的这一节中列出了jQuery中查看ajax的方法. $.ajax $.post并且$.get是主要的.

举个例子,这$.get将是一个很好的起点.以下是api文档中的一个示例:

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

是一个关于Rails 3如何处理不引人注目的JavaScript以及HTML5自定义属性的Railscast.你可以模仿这种方法在轨道2,但标准的辅助方法不会产生data-remote,data-method,data-disable-with,或其他data-*适合你的属性.您可以在Rails 3 ujs 的jQuery版本中看到,它最像我之前提到的调用控制器方法的方法,$.ajax并根据dataType(默认情况下为'script')处理响应.