Rails rails 里实例变量的用法?求指点

Tiankui · 2012年02月27日 · 最后由 hhuai 回复于 2012年02月28日 · 4421 次阅读

我是个新上手 rails 的家伙,以前也不是搞后端的,有些疑问。

class PostsController < ApplicationController
  # GET /posts
  # GET /posts.json
  def index
    @posts = Post.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @posts }
    end
  end

  # GET /posts/1
  # GET /posts/1.json
  def show
    @post = Post.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @post }
    end
  end
end

类似@post,这应该是给一个实例变量不停的改变赋值吧?有一些初级的问题

这种用法有什么好处,内存开销什么样的?

ruby 没有函数级作用域?

求推荐 ruby 变量的相关文章。

还有就是 rails 在这里仅仅就是为了配合 mvc 结构,比如更好的搭配视图?

@post是实例变量, @post = Post.find(params[:id]) 的确是@post赋值 ruby 有函数级的作用域。 关于 ruby 变量的用法的文章,google 一下一大把。 没理解 你最后的问题“比如更好的搭配视图?”

Ruby 里的变量有 global variable, class variable, instance variable 和 local variable. 这里用 instance variable 才能在 view 里使用这个值。否则使用 local variable 就好了。

没啥好处,性能其实有很大的浪费,比如同 10 个人在同一秒内都打开这个页面,那么他会生 10 个@posts,都是一样的内容,没有复用到。

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