`
qingshou117
  • 浏览: 47192 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

以AJAX发送查询条件给服务器并用partial显示查询结果

    博客分类:
  • ROR
阅读更多
经验证rails3.0.1下 用不了form_remote_tag/link_to_remote 了,会提示方法没定义。

目标:实现一个表单的内容作为查询条件,AJAX发给服务端返回查询结果
view代码:
<%= form_remote_tag :url => 'search' do %>
   <%= text_field_tag :username %>
   <div><%= submit_tag '查找' %></div>
<% end %>

错误如下:
undefined method `form_remote_tag' for #<#<Class:0x209bd88>:0x209a048>

经jsntghf解答,可以form_tag指定remote属性解决:

<% form_tag 'search', :remote => true do %>
   <%= text_field_tag :username %>
   <div><%= submit_tag '查找' %></div>
<% end %>

不过另外一个问题又来了,用partial显示@problems,代码如下
view:
<%= render :partial  => 'problem',:collection  => @problems %>

contoller:
@problems=Problem.all
--这时view正常显示出问题列表
contoller代码改成
@problems=Problem.find(:first)
view显示报错:
undefined method `each' for #<Problem:0x1bff2d0>

--partial里的collection只能处理find :all查出来的集合。所以contoller代码需要改成@problems=Problem.all
或者约束条件    @problems = Problem.find :all,
    : order => 'id',
    :conditions  => conditions

从jsntghf那学到一个新方法
<% (@problems || []).each do |problem|%>
这样就可以避免报object nil 错误


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics