【rails3】DBでは改行できているのにテンプレート(view)でうまく表示されない際の解決法
フォームで改行ありの文章を入力→DBでselect文投げて確認→改行できてる!
となっているのに、テンプレートで呼び出してみると半角空白になっていたりする場合の解決法。
まず一番重要なのは使っているRailsのバージョン。
Rails2であれば「rails 改行 表示」などでググればたくさんでてきます。
一応Rails2での解決策は下記の通り
def hbr(str) str = html_escape(str) str.greb(/\r\n|\r|\n/, "<br />") end
私も上記のようなやり方をたくさん発見してトライしたのですが、まったくうまくいかない、、
<br />タグがそのまま表示されてしまいました。
その原因は先程も書いたようにRailsのバージョン。
Rails3では標準で<%= %>の中身がHTMLエスケープされるようになったようで改行タグがそのまま表示されてしまいます。
ということで、Rails3の場合は下記のやり方で解決出来ます。
def hbr(str) h(str).gsub(/(\r\n?)|(\n)/, "<br />") end
テンプレートの記述は
<%=hbr @variable %>
の様な形でやればいけます。
Rails3 + deviseのメール設定
認証機能(サインアップ、ログイン、ログアウトetc)が簡単に実装できるので
deviseはよく使うのですが、その時に少しハマったのでメモ。
以下、development環境での設定
/config/environments/development.rb
デフォルトではfalseになっているが、
trueにすることでメール送信の際のエラーが表示される
config.action_mailer.raise_delivery_errors = true
ホストとポートの設定
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
SMTPサーバーのための設定を追記
# SMTPサーバーの設定 config.action_mailer.delivery_method = :smtp config.action_mailer.default :charset => "utf-8" config.action_mailer.perform_deliveries = true config.action_mailer.smtp_settings = { :address => 'smtp.gmail.com', :port => 587, :domain => 'gmail.com', :authentication => :plain, :user_name => 'メールアドレス', :password => 'パスワード, :enable_starttls_auto => true, }
ちなみに上記はGmail用の設定。
"config.action_mailer.perform_deliveries = true"の箇所は、メール通知全てに対する設定。falseにすると一切のメール通知がされなくなる。
もうひとつ修正箇所
/config/initialize/devise.rb
下記の通り変更
config.mailer_sender = "メールアドレス"
ちなみにログイン時にユーザー名 or メールアドレスでログイン出来るように最初にしておいて、その後だいぶたってからパスワードリセットに取り掛かったから忘れててハマったけど、その設定後でも普通にできる。
設定方法は下記リンクに詳しい
書評【Think Simple - アップルを生みだす熱狂的哲学】
今日は最近読んだ本の紹介です。
この本はアップルとずっと一緒に仕事をしていた広告代理店の著者が、アップルと共にどのようにマーケティングを行なってきたのかが詳細に書かれています。また著者はデルやインテルでも同じようにマーケティングの仕事に携わっていたので、その2社とアップルとの対比がまた面白いです。一般的な日本の企業もデルやインテルに置き換えられるでしょう。
【シンプルであることの重要性】
--シンプルの杖を振る--
ジョブズがシンプルさを愛した話は有名ですが、なぜシンプルが重要なのか。なぜ複雑さは敵なのか。シンプルさは明瞭さであり、簡潔さであり、直接的である。人は本能的にシンプルさと友達なのだと。
例えば自分の出した答えに70%の自信しかないときに悪い意味で賢い説明で相手を納得させるようなことがありませんか?シンプルさを追求するなら100%の答えを用意すべきなのです。なぜなら100%が完璧だというシンプルな真実があるからです。100%の答えがわかるくらいなら初めからそうしてるに決まってるだろと言われちゃいそうですが、そこをアップルはどう乗り越えてきたのでしょうか?
そういったことが例えばアップルの日々の会議、ジョブズの決断から非常に具体性を持って(なぜなら著者がずっとその場にいたのですから)読み取ることができます。ジョブズの伝記を読まれた方も多いと思いますが、あの本では描かれていないジョブズがこの本で見受けられます。
【アップルにとってのイノベーション】
--消費者にとって魅力的に映ったのは、アップルがデザイン段階でおこなう引き算だったのだ。--
アップルの革命性はワクワクすると同時にクリエイティブさを追求することにワクワクさせてくれます。あなたが何かを創造している、創造したいものがある、クリエイティブさに執着心がある。それならばきっとアップルがその最初のヒントを見せてくれるはずです。
--焦点を合わせるということは、その対象に対してイエスと言う意味だと人々は考える。だが、それだけではない。そこにあるほかの一〇〇のよいアイデアにノーと言うことも意味するのだ。選ぶのは慎重にしなければならない。私は自分がしてきたことと同じくらい、してこなかったことに誇りを持っている。イノベーションは一〇〇〇もの物事にノーと言うことなのだ。--
【アップルの会議】
--いつだって参加者の数が増えれば、複雑さも席に座らせることになる--
--部屋にいる者は全員がそこにいるべき理由を持っていること--
この本で印象的なのはアップルが行っている会議について非常に詳細に書かれていることです。なぜ会議を行うのか。なぜその人数なのか。誰が出席するのか。私もインターン期間中に何度も会議には参加しましたが反省すべき点が多々あったことを痛感しました。入社したらその辺りはもっと提言出来るものと思います。
シンプルさ、クリエイティブさに関しても、この会議についても、すべてに共通して言えることは目的意識を常に持っていることの重要さだと思います。そしてその目的がはっきりしている、つまり“シンプル”なのであれば自分たちのやるべきことは自ずとシンプルに見えてくるということですね。
おすすめです!Kindle版もありますよ!
Ruby基礎文法のメモ [1]
Rubyの基礎を振り返ろうと思って逆引き辞典をちょっと写経しました。
いままで使ってなかったものとか、簡単にメモです。
2つ飛ばしでループ。aからbの間を2つ飛ばしの場合。
a, b= 2, 10 a.step(b, 2) do |i| p i #=> 2, 4, 6, 8, 10 end
どこからどこまでみたいな範囲指定のループ
3.upto(8) do |i| ~~ end (3..8).each do |i| end 両方同じ意味
if文って評価後ちょくで代入できるって知りませんでした
a = 'テスト' b = 10 a = if b < 10 'シンボルです' elsif b == 10 '文字列です' else 'その他' end p a #=> '文字列です'
a = 'テスト' b = if a.class == a.class == String then 10 else 'すとりんぐじゃない' end p b #=> 10
ループの抽象化ってとこで。
test = [1, 2, 3].map{|x| x*x} #=> [1, 4, 9] [1, 2, 3, 4].select{|x| x%2 == 0} #=>[2, 4]
って感じでできるんですね。
もちろんeachでもいけるからずっとそうしてましたが
これからこのへんちゃんと使ってみようと思います。
Railsで定数管理
ちょっといま作っているサービスでコンテンツをカテゴリ分けしているのですが、カテゴリがまだ不確定なので、こういうの直にコードに書くよりもyamlファイルとかで定数管理しておいたほうがいいよなーってことで探しました。
settingslogicというのが使えそうなので試してみました。
gemでインストールできるのでラクチンです。
http://qiita.com/items/9d81c80dafcc4c73f026
こちらの記事を参考にさせていただきました。
yamlで
# constants.yml defaults: &defaults category: 1: apple 2: orange 3: grape
とかやると、この1,2,3の部分でエラーになりました。
no1とかで名前変えて対処。
ちなみにConstants.category.noのあとの番号をプログラム中で動的に変えたかったのですがうまくいきませんでした。。
メソッドの場合sendでできますがこの場合だと仕方ないですかね。
僕がプログラマーになった理由
はじめまして。駆け出しプログラマーです。
技術系のブログを書こうと思います。
- 初心者ならではの情報提供
- その日の実装の復習
- 技術に対しての気持ちや自分のビジョンの整理
などが目的です。
最初なのでちょっと自分のことを。
僕は大学では経営学を学んでいて、プログラミングは大学3年の秋からインターンを始めた会社で1年間学びました。いまは就職までの準備期間として友人とプロジェクトを立ち上げしたり、ミスチル聴いたり、デザインやレイアウトの勉強をしたり、普通に本を読んだりミスチルを聴いたり、と自己投資中です。
プログラミングを始めた理由は簡潔に言うと、偶然、たまたまです。
もともと起業志向があり、初期投資の低さ・スピード・市場の可能性などを考えてITだと思い、ITベンチャーで1年間営業をしていました。その中で、プログラマーと話すためにはそれなりにスキルが必要だなということでプログラミングを始めたら、超楽しい!!楽しいし発案すれば勝手に自分でサービス作れる!すげー!!楽しい!!ってことで、その個人能力にも惚れてプログラマーとしてやっていくことに決めました。
ってことで、次はプログラマーとして1年間働いた感想など書ければなと思います。