关于rails的ajax技术问题
有个form表单,选择条件,然后点击查询,在controller层查询结果,结果查询后显示在rightmain的div块内。想用ajax技术做到局部刷新,使表单位置的值不变,只改变rightmain的地方。运行环境是ruby1.9.2,rails3.0.7,mysql6.0.
在controller里的代码
class FdinesearchController < ApplicationController def fdinesearch t = Time.new time = t.to_a @thisyear = time[5] @agoyear = (time[5].to_i - 1).to_s @nextyear = (time[5].to_i + 1).to_s @sadines = DineAllowance.all @sadines = DineAllowance.find(:all,:conditions => "da_ym = @thismonth ") @cfs = Cofficient.all @cfs.each do |co| @sum = co.work_dine_price end year = params[:year] month = params[:month] dname = params[:depart] yearmonth = year.to_s + "/" + month.to_s if params[:look] if dname == '0' @sadines = DineAllowance.find(:all,:conditions => ["da_ym = ? ",yearmonth]) else #@sadines = DineAllowance.find(:all,:conditions => ["da_ym = :yearmonth and dname = :dname",{:yearmonth => yearmonth,:dname => dname}]) end end end end
html中的代码
<div id="select" style="padding-left:20px"> <form name="form1" id="form1"> <select name="depart" id="select0"> <option value='0'>全员</option> </select> <select name="year" id="select1"> <option><%=@thisyear%></option> <option><%=@agoyear%></option> <option><%=@nextyear%></option> </select> <label for="select1">年</label> <select name="month" id="select2"> <option value='6'>6</option> <option value='7'>7</option> </select> <label for="select2">月</label> <%= submit_tag '查看', :name => 'look', :remote => true%> </form> </div> <br> <div id="rightmain"> <table id="customers" width="100%"> <tr> <th width="10%">序号</th> <th width="10%">编号</th> </tr> <%@sadines.each do |sd|%> <td><%=sd.id%></td> <td><%=sd.peopleid%></td> <%end%> </table> </div>
因为初次写rails,代码写的可能不是非常好
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这里有参考:http://chloerei.com/2012/04/21/rails-3-2-ajax-guide/
代码实在惨不忍睹...
既然html是erb,那么最好用helper中的form_for或form_tag方法构建表单。要实现ajax,只要加上:remote => true就可以了。至于服务端返回,如果ajax较少可以直接返回js让客户端执行。
controller中对应action的最后加上:
然后和erb差不多,在views中创建*.js.erb,内容就是普通的js代码,可以用<% %>插入ruby代码,之后就看你了。。。