Rails 求教 在 rails 中使用 ajax

tiseheaini · 2012年11月29日 · 最后由 tiseheaini 回复于 2012年11月30日 · 2088 次阅读

最近在写一个 顶踩 功能,我实现了,但实现得一点都不优雅

恶心代码 javascript 代码

var likeable = function(){     
  var fadetime = 1800;         
  $(".home-like").click(       
    function(){                
      $.get("/topics/likeable",             
            function(data){    
              $(".like-info").css("display","block")
              $(".home-like span").html("顶 " + data);
              $(".like-info").fadeOut(fadetime);                                                                              
            }                  
      )                        
       .error(                 
         function(){           
           $(".like-error-info").css("display","block")
           $(".like-error-info").fadeOut(fadetime);                                                                           
         }                     
       )
    }
  )
}

controller 代码

def likeable
  @topic = Topic.last
  @topicarr = @topic.likeable.to_s.split                                                                                    

  if [email protected]?(request.remote_ip.to_s)
    @topic.likeable = @topic.likeable.to_s + request.remote_ip.to_s + ' '                                                   
    @topic.save              
    render :text => @topic.likeable.to_s.split.length                                                                       
  end                        
end

数据库 likeable 字段 存放得是用户的 ip,防止相同 ip 点击多次 格式类似于 "127.0.0.1 127.0.0.2 " 功能很简单,ajax 去请求一个地址 1 检查当前 ip 用户是否已经点击 2 如果点击,那就显示已经点击过了 3 如果没有点击,那就将 当前用户 ip 存入 likeable 字段 求优雅方案

1 状态修改的操作不能用 get,可以被伪造提交 2 likeable 这个属性可以用序列化 Array 方法 3 用 json 数据而不是纯文本,不过对于这个简单应用纯文本也没事 4 "/topics/likeable" 这个 url 没有 id?

#1 楼 @Rei 谢谢给出指导方向,懂点 js

需要 登录 后方可回复, 如果你还没有账号请 注册新账号