我正在尝试对事件控制器中的 show 方法进行一些更改,并注意到这些更改产生了零差异。我注释掉了 @event = Event.find_by_slug(params[:slug]) 行,显示视图仍然有效并且不会产生错误!我什至删除了整个 show 方法,它仍然有效。我想了一会儿我正在制作该应用程序的副本,但它绝对是正确的。
我以前从未遇到过这个问题,但最近确实将我的 Rails 版本从 3.2.0 升级到了 3.2.13。想知道某处是否存在导致这种情况的缓存设置。有没有人遇到过类似的情况或有任何关于在哪里寻找缓存配置设置的指示?
编辑 - 添加代码
def show
@event = Event.find_by_slug(params[:slug])
@meta_title = "#{@event.headline} at #{@event.venue.name}, #{@event.venue.town} - #{@event.event_date.to_date.to_formatted_s(:my_format)}"
@meta_description = "#{@event.info.to_s.truncate(380, :separator => " ")}"
@facebook_image = "#{@event.event_image.url(:large)}"
respond_to do |format|
format.html # show.html.erb
format.json { render :json => @event }
end
end
视图非常大,但我会使用以下方式调用字段:
<h2><%= @event.headline %> TEST</h2>
'TEST' 是我刚刚添加的内容,以查看是否会渲染它,所以我肯定在编辑应用程序的正确版本。
编辑 - 发现这个错误的新发展
在广泛搜索欺骗行为等之后,我逐渐开始尝试手动查找原因。首先通过搭建一个新模型并查看是否发生了相同的行为,而事实并非如此。然后看看有什么不同,在我的事件控制器中从上到下我开始注释行/动作,然后测试行为。无论如何,注释掉load_and_authorize_resource
我用来调用 CanCan gem 的能力模型,它导致我的应用程序表现得像它应该做的那样,显然现在没有我基于角色的代码。
谁能想到为什么 CanCan 会导致这种情况?