【问题标题】:Passing local to partial rails将局部轨道传递到部分轨道
【发布时间】:2013-07-08 14:01:10
【问题描述】:

我不知道发生了什么。我只想通过 ajax 渲染一个编辑表单,将一个局部传递给一个局部。我的代码如下

在我的 licencias_controller 中调用编辑操作

<td><%= link_to '<i class="icon-pencil icon-black"></i>'.html_safe, edit_licencia_path(licencia), :remote => true %></td>

这是我在 licencias_controller 中的代码

      def edit
    @licencia = Licencia.find(params[:id])
    respond_to do |format|
      format.js {}
    end
  end

这是我在 edit.js.erb 中的代码

    $(document).ready(function(){

    $('#modContLicencia').replaceWith('<%= escape_javascript(render(:partial => 'edit', :locals => {:licencia => @licencia})) %>');
    $('#modLicencia').modal('show');
});

所以我想要在 _edit 部分中显示@licencia 数据。第一次我点击查看它的渲染正常,但是如果我点击索引中的另一个@licencia 对象,部分渲染相同的@licencia 对象。所以当我再次点击编辑它时@licencia 对象没有被更新。我做错了什么?

【问题讨论】:

  • 试试 $('#modContLicencia').html(" 'edit', :locals => {:licencia => @licencia})) %>");
  • 虽然它不能回答你的问题 $('#modContLicencia') 必须是唯一的
  • 感谢您的回答,这就是问题所在!
  • +1 @BachanSmruty,没注意到你之前的评论。
  • @vinodadhikary,没关系 :)

标签: ruby-on-rails forms local edit partial


【解决方案1】:

您对引号的使用可能会导致您遇到此问题。您的 edit 将在 replaceWith 行中被视为一个变量。您想使用 \' 转义包裹您的 edit 部分的引号或使用以下内容:

$('#modContLicencia').replaceWith("<%= escape_javascript(render(:partial => 'edit', :locals => {:licencia => @licencia})) %>");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2023-03-18
    相关资源
    最近更新 更多