不以haml显示ajax响应

时间:2016-08-22 10:11:13

标签: javascript ruby-on-rails ajax haml

我正在尝试在div中显示来自rails服务器的响应。

ajax调用是这样的

$.get('/news/search?search=' + existingString, function(data) {
  $("#results").html("");
  console.log(data);
  len=data.length;
  $('#result').append('#{escape_javascript(render("newsdisplay") )}');

_newsdisplay.html.haml

- if @results
  - @results.each do |anzen|
    %li.clearfix.postMain.allnews
     .wrapper
       %li
        .messaIcon
          .icon
            %img{:src => anzen.news_image.thumb.url}
        .messaCon
          .areaDay.clearfix
            %p.messaTextCon
            グループ名:
            %span= anzen.news_name

搜索操作

def search
  if params[:search].present?
    @results = News.search(params[:search])
  end
end

的routes.rb

get 'news/search', to: 'news#search', as: :newssearch

我正确地从服务器获得响应。但是页面没有变化。但是在控制台中显示带有渲染响应的整页。任何人都可以猜到这个问题

2 个答案:

答案 0 :(得分:0)

第一个代码片段是普通的js,对吗?您无法呈现newsdisplay内联JS,之前必须呈现HTML,因此您应该将search.js.erb作为仅呈现新闻显示视图的视图。

这个例子:

How can I render a partial from .js.erb file in rails 4?

答案 1 :(得分:0)

试试这个

$('#result').append("<%= escape_javascript(render(:partial => 'newsdisplay') )");