浏览 581 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-12-03
Rails的方法中不是每个方法都一定要返回一个View页面,有的方法就是为了得到一个实例变量然后就redirect_to之前的一个页面,可是问题是我不知道为什么这个没有View页面的方法生成实例变量后,执行redirect_to之后,这个实例变量就丢了,这个实例变量可能是一个表,太大,不可以放到session或者cookie中,怎么办?
比如说: def show_scenariogroup session[:app_cgid]=params[:app_cgid]|| session[:app_cgid] @temp="just a temp string..." if session[:app_cgid]!=nil @sgs=Category.find_by_id(session[:app_cgid]).scenariogroup end redirect_to :controller=>:category end 执行了redirect_to :controller=>:category之后,不但@sgs没有,连@temp也没有,没有的意思就是在redirect_to :controller=>:category之后的页面中无法得到这两个实例变量。 谢谢! 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-12-03
redirect_to 返回一个304状态码,浏览器会自动进行下一次请求,当然和这次的请求没关系了。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-12-03
花花公子 写道 redirect_to 返回一个304状态码,浏览器会自动进行下一次请求,当然和这次的请求没关系了。 花花公子,你好!
Web开发敏捷之道第二版中,第118页总StoreController控制器的add_to_cart方法就是一个没有返回页面并且提供生成两个实例变量的方法,该方法最后一句代码就是redirect_to :index,按照书上说的应该就是跳转之后index页面再引用add_to_cart生成的实例变量,可是我试验了一下正如我上面所说,不行,请问能找到是什么原因么? |
|
| 返回顶楼 | |
|
最后更新时间:2007-12-03
i_sea 写道 花花公子 写道 redirect_to 返回一个304状态码,浏览器会自动进行下一次请求,当然和这次的请求没关系了。 花花公子,你好!
Web开发敏捷之道第二版中,第118页总StoreController控制器的add_to_cart方法就是一个没有返回页面并且提供生成两个实例变量的方法,该方法最后一句代码就是redirect_to :index,按照书上说的应该就是跳转之后index页面再引用add_to_cart生成的实例变量,可是我试验了一下正如我上面所说,不行,请问能找到是什么原因么?
def add_to_cart
begin
product = Product.find(params[:id])
rescue ActiveRecord::RecordNotFound
logger.error("Attempt to access invalid product #{params[:id]}" )
redirect_to_index("Invalid product" )
else
@cart = find_cart
@cart.add_product(product)
end
end
这段ruby代码不理解请先弄明白 begin .. rescue .. else .. end 是起什么作用的。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-12-03
花花公子 写道 i_sea 写道 花花公子 写道 redirect_to 返回一个304状态码,浏览器会自动进行下一次请求,当然和这次的请求没关系了。 花花公子,你好!
Web开发敏捷之道第二版中,第118页总StoreController控制器的add_to_cart方法就是一个没有返回页面并且提供生成两个实例变量的方法,该方法最后一句代码就是redirect_to :index,按照书上说的应该就是跳转之后index页面再引用add_to_cart生成的实例变量,可是我试验了一下正如我上面所说,不行,请问能找到是什么原因么?
def add_to_cart
begin
product = Product.find(params[:id])
rescue ActiveRecord::RecordNotFound
logger.error("Attempt to access invalid product #{params[:id]}" )
redirect_to_index("Invalid product" )
else
@cart = find_cart
@cart.add_product(product)
end
end
这段ruby代码不理解请先弄明白 begin .. rescue .. else .. end 是起什么作用的。 谢谢你的帮助。 你上面这段敏捷开发中的代码不是我说的那段代码, 下面这段才是: def add_to_cart begin product = Product.find(params[:id]) rescue ActiveRecord::RecordNotFound logger.error("Attempt to access invalid product #{params[:id]}" ) redirect_to_index("Invalid product" ) else @cart = find_cart @cart.add_product(product) redirecto_to_index#就多了这个跳转,不明白的就是这里,这个#方法执行完毕之后跳转到index后,还能找到@cart这个实例变量么? end end 帮忙看下,谢谢! |
|
| 返回顶楼 | |
|
最后更新时间:2007-12-03
哥们
before_filter :find_cart, :except => :empty_cart 这个一定忘记了吧. |
|
| 返回顶楼 | |
|
最后更新时间:2007-12-04
dlxiao 写道 哥们 dlxiao你好! 不明白你说的什么意思,页面间传递实例变量和前置过滤器有什么关系啊?
before_filter :find_cart, :except => :empty_cart 这个一定忘记了吧. |
|
| 返回顶楼 | |
|
最后更新时间:2007-12-04
before_filter :find_cart
find_cart在每次处理前初始化@cart 而find_cart从session中取出数据组装cart 不存在什么传递实例变量(实际数据是在session中) LZ要好好看一下agile rails了 |
|
| 返回顶楼 | |







