【问题标题】:Render partial after ajax successajax 成功后渲染部分
【发布时间】:2015-04-11 10:16:19
【问题描述】:

我有以下代码来执行 ajax 调用并呈现部分:

$("#save-category").click(function(){
    var category_id = $('#categorization_category_id').val();
    var category_name = $('#categorization_category_id  option:selected').text();
    var user_id = "#{current_user.id}";
    $.ajax({
      url: "#{dashboard_categorizations_path}",
      type: 'POST',
      dataType : 'json',
      data: {'user_id': user_id, 'category_id': category_id},
      success: function(data) {
        $("#categoriamensaje").show();
        $('.categories').html("#{escape_javascript(render('tutor_categories'))}");
        var leadMessage = setInterval(function(){
              $("#categoriamensaje").hide();
            }, 3000);
      },
      error: function(xhr, desc, err) {
        console.log(xhr);
        console.log("Details: " + desc + "\nError:" + err);
      }
    }); // end ajax call
  });

除了部分渲染之外,一切正常。

这是haml代码:

.row
  .col-md-2
  .col-md-5
    %h3
      = _("Tus Categorias")
    .categories
      = render partial: 'tutor_categories'
  .col-md-4

还有我的控制器代码:

def create
    @categorization = Categorization.new(categorization_params)
    @categorization.save
    respond_to do |format|
      format.json {  render json: {id: @categorization.id.to_json},  success: 200  }
    end
  end

谢谢

【问题讨论】:

  • 你在哪里写了你的 js ajax 调用?是 .js.erb 吗?
  • @RAJ 我没有,这个文件需要什么???
  • 你写在.html.erb吗?
  • @RAJ 不是 html.haml 文件
  • 你可以试试escape_javascript(render(:partial => 'full/path/to/the/partial'))

标签: jquery ruby-on-rails ajax ruby-on-rails-4 haml


【解决方案1】:

根据我们在聊天中的讨论,您需要追加新的 categorization 记录,而不是替换整个列表。

您的 HAML 将变为:

.row
  .col-md-2
  .col-md-5
    %h3
      = _("Tus Categorias")
    .categories
      = render partial: 'tutor_categories', collection: @user_categories, as: :category 
  .col-md-4

您的部分遗嘱如下所示:

.badge-tutor{style:"margin: 2px;"} 
  = link_to "<i class='fa fa-tag'></i> #{category.name} <i class='fa fa-times-circle fa-1x' style='color:#A21F1F;'></i>".html_safe, dashboard_categorization_path(category.id), method: :delete, data: { confirm: 'Eliminar esta categoria?' }, style: "color:#fff;text-decoration: none;font-size: 15px;"

控制器:

def create
  @categorization = Categorization.new(categorization_params)
  @categorization.save

  respond_to do |format|
    format.json {render json: {category: @categorization},  success: 200}
  end
end

在您的 AJAX 调用中,您需要将部分渲染代码更新为:

$('.categories').html("#{escape_javascript(render(:partial => 'tutor_categories', :locals => {:category => data.category}))}");

【讨论】:

    猜你喜欢
    • 2016-11-09
    • 1970-01-01
    • 2016-04-24
    • 2022-08-19
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多