如题。下面是我的 controller 和 view 的代码
controller:
def create
title=params[:title]
content=params[:content]
summary=content[0..130]
file_name=title+'-'+Time.now.asctime.split.join('-')
file_path='./blogs/'+file_name+'html.slim'
@article=Article.new(title:title,content_link:file_path,summary:summary)
begin
@article.save!
File.open(file_path,'w+'){|f|
f.write('markdown:'+content)
}
flash[:success]="Blog posted"
redirect_to sign_in_admins_path
rescue Exception => e
flash.now[:error]="error:#{$!} at: #{$@}"
render :new
end
end
view
div id="article_editor"
=form_for :article ,url:{:action=>:create} do |f|
=text_field_tag :title
=text_area_tag :content
=f.submit "Post",class:"btn btn-large btn-primary"
对于这个错误已经 google 过了,很多解决方案都是说把 cookie store 改成 session store. 但是我不明白的是,我要做的仅仅只是把 content 和 title 传递回到 controller。而且,我在做测试的时候,针对 content 和 title 就写了‘aaa’和‘aaa’,不该超出 cookie 的 4kb 大小啊。。
更何况,作为 http post 请求,content title 不是应该写在 http 的 body 中嘛?为什么会和 cookie 扯上关系,还超出了上限
以下我在出错时候,看到的 cookie 数据,真心很长很长。。。。截图一部分。
求指导!这和 cookie 为什么会扯上关系,是不是我对 http 传送的请求理解错误了?
更新
已经知道,由于flash.now[:error]="error:#{$!} at: #{$@}"
导致 flash 存储溢出而保存,那如果我想看出错是什么,错在哪儿。那这个异常该怎么处理呢?或者说,能不能取到异常栈的最顶层信息。
更新 2
我知道错误在哪儿了。。。因为 model 里的那个正则表达式匹配错误。。。
ActiveRecord::RecordInvalid: Validation failed: Content link is invalid
这个错误是我通过输入同样的数据在控制台里得到的。但是如果在集成的 rails 开发环境下,是否可以通过异常处理获取到这条错误信息呢?