【发布时间】:2011-09-13 17:59:45
【问题描述】:
我有一个页面,用于通过使用提供的表单提交数据来搜索列表。表单参数通过 ajax(发布请求)提交,在搜索表中创建一个新记录,然后通过该记录的 show 操作显示列表(动态地,在提交表单的同一页面上)。
结果有 kaminari 提供的分页链接,如下所示:
<%= paginate matches,
:params => {:controller => 'searches',
# I have to specify the id because my searches are stored in the database
:action => 'show', :id => search.id},
:remote => true %>
请注意,分页链接是动态包含在页面中的。因此,当我进行新搜索并获取新列表时,服务器会重新呈现分页链接。
这是我在搜索控制器中的显示操作
def show
@search = Search.includes(:rate).find(params[:id])
@matches = @search.matches.order(sort_column + " " + sort_direction).page(params[:page])
respond_to do |format|
format.html
format.xml { render :xml => @matches }
format.js
end
end
由于某种原因,我无法弄清楚,我在搜索表单中使用的所有参数(其中有很多)都附加到了 kaminari 分页 url,给了我这样的 href:
<a href="/searches/145?massive parameter list omitted" data-remote="true" rel="next">2</a>
省略的参数列表太长,以至于无法成为有效的 GET 请求,我收到了 414 错误代码。
正如您从我上面的搜索 -> 显示操作中看到的那样,分页链接没有必要附加所有这些信息。他们只需要路线、id 和页码。
如何防止这种情况发生?
顺便说一句,我尝试在 kaminari 选项中设置 :method => :post。似乎没有帮助。我正在使用 kaminari v 0.12.4(最新)和 Rails 3.1.rc4。
【问题讨论】:
-
能否提供生成搜索链接的代码?它只是一个search_path吗?您是否使用任何 gem 进行搜索?
-
对不起,我不明白。搜索链接是什么意思?搜索是通过一个表单完成的,该表单通过 POST 请求提交给
searches_create_path。 -
这个问题你解决了吗?我正在经历非常相似的一个?如果是,请提供一些线索。问候
-
不,我从来没有深究。我离开了那个项目。
标签: ruby ruby-on-rails-3 pagination kaminari