rails问题总结

  1. 使用ajax异步提交表单
    在rails中只能使用type=submit的button来提交有data-remote=true属性的ajax的表单。如果使用type=button的按钮提交表单则只能通过js(document.formname.submit())提交,此时会变成同步提交而非ajax。

  2. escape_javascriptsimple_format
    2.1 当数据库中的字段有换行符,引号等特殊字符时使用$(input).val("<%= @data %>")获取数据会导致js语法错误,此时可以使用$(input).val("<%== escape_javascript @data %>”)来将ruby转换成安全的js
    http://stackoverflow.com/questions/18854749/escape-string-ouput-rails-string-in-javascript
    2.2 在html中直接显示数据库中的\n等特殊字符时,可以使用<%= simple_format(@data) %></p>或<p><%= @data.html_safe %>来进行安全的转换

  3. string转换成时间戳

require 'time'
timestamp = Time.parse("2011-05-19 10:30:14").to_i
  1. flash
    rails中的flash和flash.now可以保存一次请求过程的内容
    flash[:notice]的内容可以保持到下一次的action
    flash.now[:notice]的内容只用于当次渲染view

  2. protect_from_forgery
    从rails 2.0 开始默认开启(protect_from_forgery),目的在于防止CSRF(Cross-Site Request Forgery)攻击。
    rails为了保证当前的请求是来自自己的请求,而不是通过其他网站伪造的请求,都会在生成的form 里加入一个隐藏的token值,只有非get请求才会附带token

<%= tag(:input, :type => "hidden", :name =>  request_forgery_protection_token.to_s, :value =>  form_authenticity_token) %>

当然如果你认为你的action确实不需要验证,那可以这么写:

#除了index,controller里的其他action都需要验证
protect_from_forgery :except => :index
#只有index需要验证
protect_from_forgery :only => :index

只需要在controller中加入protect_from_forgery就可以开启防csrf攻击机制,这会导致在前端提交的form中自动加入token并在后端验证,非常方便

  1. 关于params的问题
    对于一个界面,第一次渲染时没有params这个参数集合,就是说params[:any]都是nil;在以后的渲染过程中在表单中为空的参数被当做空字符串传到后端也即params[:not_fill] == ''
    如果前端传来的params[:loss_money]=''而数据库中loss_money为decimal类型,则赋值时case.loss_money = params[:loss_money]会被转换成null,解决方式是写为case.loss_money = params[:loss_money].to_f这样null会被转化为0.00

  2. 局部视图出现两次的问题
    rails中使用render进行局部视图渲染时,如果渲染的内容在页面中出现两次,则有可能是.js.erb文件中选择的元素不对:

    $("#case_table_body").html("<%= escape_javascript(render :partial => 'cases_table')%>”)
    case_table_body应该是主页面中的元素

  3. 在ajax请求中重定向到其他页面

    render :js => "window.location = '/jobs/index'"
  1. 在form中如果有type=file的input的话data-remote=true就不会生效了,可以使用remotipart这个gem来解决

  2. 使用tab切换显示内容时前后端传递params[:tab]比较难以控制,可以使用jQuery在点击事件中修改tab的active状态

  3. 使用<%= simple_format(@data) %>来转换后端传到前端的数据
    (http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format)
    simple_format根据一些规则将后端的字符串转换成前端的HTML。多个\n被认为是一个新段落,被包在<p>标签中。一个\n被认为是一个新行,被转换成<br/>

  1. 关于html_saferawsanitizeh()www.jianshu.com/p/ZLpFSy
  2. 当打印日志出现问题时(log writing failed. "\xE6" from ASCII-8BIT to UTF)可以将log内容强制转码成utf-8进行打印
custom_logger.info "resp: #{resp.force_encoding('UTF-8')}" 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 个人自行阅读时候,翻译的文档。因为比较渣,如果有更合理或者错误的地方烦劳告知,我会做修改。Oracle Data ...
    窝窝的小黑屋阅读 1,201评论 0 3
  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 9,355评论 0 23
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • 浮屠塔上的明珠还在闪亮 看尽三世的红尘 离不开一个情 拼命的挣扎 却妄想逃过命运的掌心 玩弄在鼓掌的是迷路的...
    日晨阅读 190评论 0 0
  • 今天是新年第六天,六寓意六六大顺!愿我天岑在新的一年事事顺利!愿我所有亲人朋友事事顺利! 愿所有上简书的朋友都六六...
    沙仑de玫瑰阅读 247评论 1 1