javascript - Rails 分页 - 带参数的 Ajax 数据输入

标签 javascript ruby-on-rails ajax pagination kaminari

所以我使用 Kaminari gem 在我的应用程序中实现无限滚动。我遇到的问题是每次在 Ajax 调用中都向 Controller 提供搜索参数。

def create
@onsearch = true
@lists = current_user.lists.all
@search = params[:search]
@page = params[:page]
puts "Search is #{@search}, page is #{@page}"
@outfits =  Oufits.where("description LIKE ?", "%#{params[:search]}%").page(params[:page]).per(20)
respond_to do |format|
  format.html
  format.csv { send_data @outfits.to_csv }
  format.xls
  format.js {render :layout => false }
end

结束

这是当用户滚动到页面底部时我调用的 ajax:

  $.ajax({
    type: "GET",
    url: url,
    data : { search : '<%= @search %>'},
    dataType: 'script',
    beforeSend: function(){
     $('.sk-wave').show();
    },
    complete: function(){
     $('.sk-wave').hide();
    },
    success: function(response){
     $('.sk-wave').hide();
     },
    error: function(jqXHR, textStatus, errorThrown ){
     alert("oh no! ajax went wrong.")
     $('.sk-wave').hide();
     console.log("jqXHR = "+JSON.stringify(jqXHR));
     console.log("textStatus = "+JSON.stringify(textStatus));
     console.log("errorThrown = "+JSON.stringify(errorThrown));
    }
  });
 }

当我用 Javascript 响应时渲染的部分工作正常,并将其余内容完美地添加到页面中。

$('.pagecontent').append("<%=j render(partial: 'search/outfits', 
format: 'html') %>");

<% if @outfits.current_page == @outfits.total_pages %>
 $('#view-more').remove();
<% else %>
 $('#view-more a').attr('href', '<%= url_for(page: 
 @outfits.current_page + 1) %>');
<% end %>

但经过检查,搜索参数在我的 Controller 中以文字字符串“<%= @search %>”形式接收。我已经在谷歌上搜索了如何将 erb 变量传递给 javascript,但对于我想要做的事情来说,它似乎太复杂了。那我怎样才能确保每次都通过呢?感谢您的帮助

最佳答案

您有几个问题:

'<%= @search %>'没有按你的预期工作。 app/assets 中的 Assets 文件directroy 无法访问您的 View 变量,因为它是在部署应用程序时在服务器上预编译的。

<input type="hidden" id="foo" name="zyx" value="<%= @search %>" />
var value = $('input#foo').val()

将变量传递给 ajax使用hidden_input值为@search ,并通过 jquery 获取它.

"GET"没有 body ,这意味着你的data键作为查询字符串传递。

使用"POST" .

关于javascript - Rails 分页 - 带参数的 Ajax 数据输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46233276/

相关文章:

javascript - 创建和销毁 shieldUI 小部件

javascript - HighCharts - 条形图中的 Y 轴填充

java - 使用ajax刷新验证码的问题

javascript - 当我使用 ngf-select 选择按钮时,ng-file-upload 中的 ng-model 更改为 null

javascript - 如果 javascript 是单线程的,那么如何管理 ajax 调用?

javascript - Rails 5、Ajax、jQuery - 无法将接收到的数据发送到特定元素

ruby-on-rails - Carrierwave 似乎按预期工作,但由于 ruby​​ on rails 中的路由错误,照片无法显示

ruby-on-rails - 将两个 ActiveRecord::Relation 与 OR 组合,而不是 AND,返回一个 Relation 而不是一个 Array 以便以后能够分页

php - 使用 AJAX 时,如何在同一个 PHP 文件中放置选择和插入代码?

javascript - 如何对 ng-click 激活的函数进行回调?