新手问题 如何实现 ruby-china 式的评论功能

lafmad · 2013年07月30日 · 最后由 edgar_wang_cn 回复于 2013年08月01日 · 3927 次阅读

最近自学 rails,在跟 railsturorial,到最后一章想给微薄加回复功能。

照虎画的猫在 heroku 代码


太谢谢 Rei,难为你了,不但费心回答还得费力帮提问者提炼问题。没想清楚问题在哪,所以沦为对过程的琐碎描述了,还描述的这么糟糕,抱歉。

1 已解决。多等一会就好了。 2、3、4、5、6 非常有帮助,谢谢。

7、8、9 的问题我再试着表述清楚一点。

问题


比如浏览器当前页为 micropost/1 显示 id=1 的 micropost,其下有 4 条回复,id 顺序为【1,3,6,12】

我怎么在点击某条回复的时候,得到该条回复的 id 值呢?比如说我点回复 3 楼的时候,我怎么让 rails 取得 3 楼的 comment_id“6”?我当然知道我点击的是 3 楼,但怎么让 rails 知道?

我可以通过 浏览器地址中的 micropost/1 得到 @micropost=Micropost.find(1),然后得到 @comments=@micropost.comments,以及该微薄所有回复按升序排列的数组 @micropost.comment_ids=[1,3,6,12] 接下来该怎么办?


窘,睡前一看无回复,问题太无趣了么?

顶楼文字叙述顺序非常乱,我读着经常要回退来看到底问题是什么。我总结了几个:

1. 换成新的 push 到 github,为什么现在还没动静呢。

不知道问什么

2. 怎么将赋值顺序表现出来?

加个 order 参数

@comments = @micropost.comments.order("created_at ASC").paginate(page: params[:page])

3. 丑死了,请问大家有什么好办法么。

each_with_index

http://apidock.com/ruby/Enumerable/each_with_index

4. 点回复,跳到回复框,自动出现 #x 楼,@某某,这个是这么做到的?源码超出能力,看不懂。

很复杂,建议先把前面的问题解决,然后专门研究

5. 点击#可以跳转到指定楼层,是通过 Ajax 实现的吧?

HTML 锚点加一点 JS 方法进行高亮

6. 点击互补的锚就回到对应地点。这个如果想实现的话得学什么?html+js?

单纯的 HTML 锚点

7. 而且我还有上面那个问题,我点击回复的时候,如何让 controller 得到该条回复的 id?

不明白指什么

8. comment contoller 去哪得到这个 id? url 中的 params 中如上所述没有,点回复的时候生成表单(哪还是怎么取得 id 呢)包括过来?

这是中文吗?

9. 接下来该怎么弄不知道了。

我也不知道了。

总结

楼主读一读自己的帖子,看看通顺不。读不通顺,别人怎么回答?

匿名 #3 2013年07月31日

看到这满屏幕的字,我就没有继续看下去的欲望了。

#3 楼 @lewisgrady 删到只剩几行了,有空帮忙看看吧...

#4 楼 @lafmad 如果你回复三楼 #3 楼,那么这个链接就是http://ruby-china.org/topics/12916#reply3 ,这里的 reply3 就是 3 楼 html 里的 id 属性的值,具体的一些操作可以看这里https://github.com/ruby-china/ruby-china/blob/master/app/assets/javascripts/topics.coffee#L39

我也想问@Rei 哥,我在看你的 codecampo,然后现在我的 topic 和 reply 关联了,我在 topic 的 show 页面里面嵌套写了 reply 的 form,现在我有个问题是,是我的 reply 的 form 是在 show 页面,那么如果我 reply 提交失败,我应该去渲染 new,但是这样就不是在 topic 的 show 页面了。怎么办呀。

#6 楼 @Sunnyroger 就渲染 new,挺好的。

#7 楼 @Rei 可是渲染 relpy 的 new,这样页面就只有一个 new 页面了,不是在 topic 的 show 页面了阿。怎样才能做到像 ruby-china 或者 codecampo 那样的呢

#9 楼 @Rei soga,我试一下,谢谢啦

#5 楼 @edgar_wang_cn 谢谢。想学这个当饭碗,看样子还有好长的路要走

#11 楼 @lafmad 一步步来,这些知识熟悉了一部分之后就能触类旁通了。

#12 楼 @edgar_wang_cn js,Ajax 不知道该怎么下手,您有什么好的建议么。系统的跟一个网上教程或者一本书?怎么才能尽快做点实事,以够资格找个实习。自学好杂没方向感,迫切想接触到实际的环境。

#13 楼 @lafmad 呃,我也算是新手,只有一点想法可以分享一下。如果你有 C 类语言的基础,可以看 Javascript: The Good Parts 入门 JS,如果没有编程基础的话,可以去看看 codeschool、codecademy 上面的免费 JS 课程;入门之后就是边用边学了。JQuery 之类就是直接拿来用。

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