新手问题 ruby-china 里面,ajax 如何实现的?

blueplanet · 2013年06月26日 · 最后由 zhangyanan 回复于 2014年08月27日 · 3311 次阅读

这两天在重看 @huacnlee 的视频 http://railscasts-china.com/episodes/live-show-with-huacnlee

我的理解是这样的:

  • topics/show.html.erb里面调用topics_helper.rb的方法,生成了一个 Link

    link_to raw([icon,"关注"].join(" ")), "#", :onclick => "return Topics.follow(this);",
                        'data-id' => topic.id,
                        'data-followed' => (class_name == "followed"),
                        :rel => "twipsy"
    
  • topics.coffee里面定义了Topics.fllow这个事件(函数?)

    # TopicsController 下所有页面的 JS 功能
    window.Topics =
    ...
    follow : (el) ->
    topic_id = $(el).data("id")
    followed = $(el).data("followed")
    if followed
      $.ajax
        url : "/topics/#{topic_id}/unfollow"
        type : "POST"
      $(el).data("followed", false)
      $("i",el).attr("class", "icon small_follow")
    else
      $.ajax
        url : "/topics/#{topic_id}/follow"
        type : "POST"
      $(el).data("followed", true)
      $("i",el).attr("class", "icon small_followed")
    false
    

到这里我没弄明白的是

  • windows.Topics = ... 这句话是定义了一个变量?
  • 如果我自己想实现一个最简单的jshello world的话,只需要这两步就可以么?

实际上我自己尝试了一下,但没有成功

  • rails new coffee_test
  • rails g controller topics index
  • topics/index.html.erb里面生成 Link <%= link_to 'test', “#", :onclick => "return Topics.sayHello();" %>
  • topics.coffee里面定义函数

    windows.Topics = 
    sayHello: ->
    alert('Topics say : hello!!!')
    
  • 打开localhost:3000/topics/index后,点击test完全没反映,也没有 JS 错误

请问我的理解哪里出错了?

看编译结果的 JS 嘛.. 那个压缩过.. 至少还能看懂 window.Topics //l.ruby-china.com/assets/topics-905bdd81827eab9c64a0b567d892a545.js

#1 楼 @ShiningRay #2 楼 @jiyinyiyong 看来我的 JS 实在是太弱了,表示还是看不懂。 我把问题内容修改了一下,更具体一些。

如果你的代码没贴错的话,windows 是个什么东西... <%= link_to 'test', “#", :onclick => "return Topics.sayHello();" %> 里面怎么还有个中文符号呢...

#4 楼 @zj0713001

  • 不好意思,代码确实错了。是window,没有s
  • 你说的中文符号是说双引号么?确实也错了

非常感谢,把上面这两个地方修改之后确实弹出提示了!再次感谢!

#5 楼 @blueplanet 还是推荐至少把 js 基本语法和基础知识学了再看 coffee 否则你会经常掉坑里...

#6 楼 @zj0713001 大实话。再次感谢!

@blueplanet topics.coffee 里面的 js:window.Topics 这样的写法是 js 的写法还是 coffee 的写法?

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