11 posts tagged “rails”
そうだよ!英語圏の人だってみんな使いにくいと思っているんじゃん!
誰だこんな変な機能入れたのは。
http://www.aptana.com/forums/viewtopic.php?p=13791
何を騒いでいるかというと昨日Aptana Studio1.0.2とRadRails最新版を入れたら
Rails ExplorerがなくなってRuby Explorerとか言う別の奴に置き換わってしまった。
それはいいのだがフォルダ/ファイルツリーの挙動が以前と変わった。
説明するのが面倒なので引用すると
Ruby Explorer - Double-Click File/Folder Hiding
Couldn't see anything in the preferences - is it possible to disable this feature?In case its not clear; when using the new(ish) ruby explorer if you double-click a folder it opens it and hides all other files/folders rather than just displaying all the files within it. You then need to click the back arrow to get back to the full listing.
レスとして・・・
There is no preference for that now, but I've opened a ticket for it: http://support.aptana.com/issues/browse/ROR-83
絶望した。使えない仕様に絶望した。
チケット見ると10分で直っている・・・。
- やっぱりセビージャは強かった。アーセナル公式戦初黒星。
懸念していたけれどサブメンバー&セスク負傷交代ではやはり勝てず。
セビージャの熟練ぶりは素晴らしい。チェルシーと同じで既に出来上がったチームだね。
UEFAカップ王者セビージャFCが27日、アーセナルFCに今季の公式戦で初黒星をつけると同時に、UEFAチャンピオンズリーグ決勝トーナメント進出を決めた。 - 「ヘスキー○ねばいいのに」
ウィガン戦でかわいいウォルコットに容赦ないショルダーチャージかけた
大人げないヘスキーに、アーセナルサポーターから飛んだヤジ。
その後「ヘスキー○ぬこたないけどxxxxx」というレスがついていて不覚にも受けてしまった(^^:;
ネット上から試合の感想いろいろ
更に次のアストンビラ戦ではFWカリューが後ろからタックルして
フレブを負傷交代させる事件が発生。あれはレッドでもおかしくなかった。
フレブは予測していなくてもろに受けてしまった模様。
ホント若手削るしか能がない奴は死ねばいいのに。
「アーセナルのベラルーシ代表MFアレクサンドル・フレブ(26)が、2日に行なわれたアストンビラ戦でアキレス腱を痛め、5日に行なわれるニューカッスル戦を欠場する見込みとなった。」 - アデバイヨル&フラミニ
アーセナルは今、ファンペルシがずっとお休みなのを始めセスク/フレブ/フラミニ/ロシツキの
中盤の誰かは出場できない、というメンバーやりくりを強いられている訳だが、
今年は去年とは違って頼もしい!
アストンビラに前半先制されたときはアウェーだしセスクいないしこれはダメだなと(去季のつもりで)
思ってしまったのだが、あっさりアデバイヨルのヘッド&フラミニの飛び出しで逆転したのは嬉しかった。
セスクがアーセナルの生命線であることは間違いないがマンU戦のギャラスを始め
フレブ/ロシツキ/フラミニと日替わりでヒーローが誕生するのは、非常にいいムード(^-^) - そして、起きられません×2
日中の仕事で疲れていて、ChampionsLeague第ニ戦は全く起きられません!
リバプールが負けるかwktkしてたんですけど後で4-1と聞いてがっくり。
最近のリバプールの好調ぶりにはあなどれないものがある。
「アンフィールドで行われた28日のUEFAチャンピオンズリーグ第5節は、終盤の12分間に3ゴールを奪ったリバプールFCがFCポルトを下した。」
今週は不規則日程らしくて、朝5時からマンチェスターUの試合があったのだが同じく爆睡。
ロナウドの2得点で勝ったらしいのだが前半1-0ということしか記憶に残っていない。
当然、ロナウドの得点シーンも見ていない(苦笑 - みんな、負けないねぇ
アーセナル、マンU、チェルシー、リヴァプールが4強で、
アーセナルサポーターの自分としては他のクラブが早く脱落してくれないかなと
wktkしながらウォッチしているのだが全然負けてくれないだな、これが。
11/24にボルトンがマンUに勝ってくれたときは「ボルトンGJ!」が飛び交ったもんですが
今年は直接対決で決着付けるしかない雰囲気。 - 12/16の大一番!
リヴァプール vs マンチェスターUとアーセナル vs チェルシー戦が同日開催なのですよ!
アーセナルとリヴァプールが勝つのがおいしいが、さてさて。
その日はRails勉強会もruby忘年会もあるし、やたら忙しいな。体が足りん。
あまりにあっけなかったので意外。30分くらいでできた。
http://www.enjoyxstudy.com/javascript/suggest/
- 入力内容をもとに検索を行い、補完候補を表示します。(Google Suggestぽく)
- Ajaxでは無く、初回画面表示時のみデータの読み込みを行い、それ以降は、クライアント側で対象データから検索します。したがって、入力内容に変化があってもサーバ側にアクセスすることはありません。
- 検索は、前方一致/部分一致、大文字と小文字の区別あり/なしといったように、オプションで簡単に指定できます。また、その他にも様々なオプションが指定可能です。
- 検索結果の表示上限を指定できます。(デフォルト上限20件)
- 補完候補はキーボードの上下と、マウスにて選択できます。また、キーボードで選択中にESCキーでキャンセルといったような操作も可能です。
- スペース区切りで、複数キーワードの入力補完が行えます。
- IMEで入力中であっても、検索が行われます。
たとえば企業をたくさん登録するとして休日と営業時間は似ているはずだから候補表示したい、というような場合。
suggest.jsは下記みたいな配列を補完候補として使用する。
var holiday_list = [ "土曜","日曜","祝祭日","休日、年末年始"];
これをrails側で出力するには
■Controller:Company
def suggest_list
@holidays = Company.find(:all,:select=>"distinct holiday")
end■View:suggest_list.rhtml
var holiday_list = [
<% @holidays.each do |i| -%>
"<%= i.holiday %>",
<% end -%>
"#thisisdummyforlist#"
];
として入力フォームから<script src="/companys/suggest_list" charset="UTF-8"></script>とするだけ。
ポイントは下記のとおり。
・:selectでdistinct フィールド名として一意なパターンのみ抽出すること
・Viewの配列要素生成の最後で,が原因のエラーにならないよう"#thisisdummyforlist#"とおまじないを入れること
http://d.hatena.ne.jp/kusakari/20070530が参考になる。ファイルも消してくれるのは良いね。
画像削除は自前で行わなくても、nilを代入した上で save を呼ぶとファイルを消してくれるようなので、そのように修正。
では編集画面で画像だけ削除したい場合はどうすればよいか?
■view:_form.rhtml
<p><label for="memo_image">画像</label><br/>
<%= file_column_field 'memo', 'image' %><br/>
<%unless @memo.image == nil%>
<%= image_tag(url_for_file_column("memo", "image")) %><input type="submit" name="delete_image" value="画像削除">
<%end%>
</p>■controller:update
def update
@memo = Memo.find(params[:id])#もし画像削除ボタンが押されたなら画像のみnilにする。
if params[:delete_image]
@memo.image = nil
render :action => 'edit'
return
endif @memo.update_attributes(params[:memo])
flash[:notice] = 'Memo was successfully updated.'
redirect_to :action => 'list'
else
render :action => 'edit'
end
end
赤い所が変更点。
・formにsubmitが複数ある場合、実際に押されたボタンのvalueしかPOSTされない。
従ってparams[:ボタン名]の値の有無で押下判定できるよ。
・render :actionで編集画面に戻した後、returnでメソッドを抜けましょう。
P.S.今日の気に入った処理
<%= date_select 'article', 'start_date',start_year =>Date.today.year-1 %>
railsでは年のプルダウン選択肢をスマートに作れる。
・デフォルトでは今年を中心に前後5年を選択肢にする。
・sart_year、end_yearで開始年、終了年を指定できる。
・Date.today.year-1は昨年(2006)を意味している。
→顧客「プルダウンが足りないので追加してください!」がなくなって(゚Д゚)ウマー
railsのfile_columnは便利だが一覧表示の各行で画像を表示しようとしてurl_for_file_columnを使うとエラーになる。
<% @memo.each do |memo| -%>
<tr>
<td><%= memo.title %></td>
<td><%if memo.image? %><img src="<%= url_for_file_column("memo", "image") %>")<%end%> </td>
</tr>
<% end -%>
具体的にはこんな感じ。
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.image_relative_path
他の人は悩んでないので解決策があるのはわかっていたが、2日ほどはまった。
原因
url_for_file_columnメソッドはインスタンス変数対象じゃないと使えません。
# プラグインの公式のページの下のほうに英語で書いてあった気がする
解決方法
繰り返し操作の冒頭でローカル変数をインスタンス変数にぶち込みましょう。
そして、そのインスタンス変数を対象にurl_for_file_columnを使ってください。
<% @memo.each do |memo| -%>
<% @memo_image=memo %>
<tr>
<td><%= memo.title %></td>
<td><%if memo.image? %><img src="<%= url_for_file_column("memo_image", "image") %>")<%end%> </td>
</tr>
<% end -%>
自分だけなんだろうか??
プルダウンのエラーで赤い枠が出ないぞ。
http://capsctrl.que.jp/kdmsnr/diary/20060414.htmlをenvironment.rbにコピペして修正した。
module ActionView
class Base
@@field_error_proc = Proc.new{ |html_tag, instance|
"<span class=\"fieldWithErrors\">#{html_tag}</span>"
}
cattr_accessor :field_error_proc
end
end
それからエラー表示がランダムなのも困る。これはエラーチェック対象をhashで持っているから
http://d.hatena.ne.jp/elm200/20070819/1187477042を参考に下記をenvironment.rbに追記して解決。
module ActiveSupport
class OrderedHash
def each_key
each { |key, value| yield key }
end
end
endmodule ActiveRecord
class Errors
def initialize(base) # :nodoc:
@base, @errors = base, ActiveSupport::OrderedHash.new
enddef clear
@errors = ActiveSupport::OrderedHash.new
end
endmodule Validations
module ClassMethods
def write_inheritable_set(key, methods)
existing_methods = read_inheritable_attribute(key) || []
write_inheritable_attribute(key, existing_methods | methods)
end
end
end
end
例えば電話は入力必須だけれども、FAXは必須ではない。
だけど書式チェックはしたい。というような場合。
単純にvalidates_format_of を指定すると毎回書式チェックが走ってしまう。
入力されたときだけチェックしたいんだけど。
validates_format_of :fax, :with=> /\d{2,4}-\d{2,4}-\d{4}/ ,
:message=> "の書式が正しくありません。", :if => :fax?
とする。
■今日のポイント
・:if の条件がtrueならvalidateする。
・ActiveHeartだとエラーメッセージが「不正」の単語になってしまうのでmessageで再指定。
・"#{:name}の書式が正しくありません。"となるので、冒頭の項目名は不要。
ついでに別件。numericalityだけだと小数が通ってしまうので
整数だけにしたいときは:only_integer =>trueを指定するべし。
validates_numericality_of :price, :only_integer =>true
内藤さんとは面識ありませんが、赤字の中でもRailsコミュニティに
オフィスを提供してきた貢献は大きいと思っていたので残念。
http://bb.watch.impress.co.jp/cda/news/20116.html
中間期の連結業績は、売上高が前年同期比87.5%増の9億4,600万円。営業利益はマイナス1億7,800万円(前年同期4,600万円)、経常利益はマイナス1億8,300万円(同5,700万円)、純利益はマイナス3億5,200万円(同3,600万円)と、前年同期と比較していずれも赤字に転落した。
--中略--
ドリコム単体では、「ドリコムSNS/ブログシステム」、「ドリコムブログオフィス」に注力するほか、特にインターネット広告分野を強化する考え。一方で、SaaSや「ドリコムCMS」、個人向けサービス「ドリコムRSS」「モノリス」「alis(β)」は新規開発を停止または一時停止する。また、「ドリコム研究室」は閉鎖して、研究成果を各ビジネスに応用するとした。
ドリコム研究室閉鎖や本体新規採用の停止などの施策とともに、
既にRails人材の流出が始まっており東京コミュニティの先行き不安です。
WindowsXPのInstant Rails環境でgem install rmagickをやると下記のエラーになる。
C:\InstantRails\rails_apps>gem install rmagick
Building native extensions. This could take a while...
ERROR: While executing gem ... (Gem::Installer::ExtensionBuildError)
ERROR: Failed to build gem native extension.ruby gem_extconf.rb install rmagick
sh configure
gem_extconf.rb:38: undefined method `exitstatus' for nil:NilClass (NoMethodError
)
Gem files will remain installed in C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/r
magick-1.15.10 for inspection.
Results logged to C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rmagick-1.15.10/ge
m_make.out
あるいは下記のエラーが出る場合。
ERROR: Error installing gem rmagick[.gem]: buffer error
http://d.hatena.ne.jp/akm/20071001を参考に解決。rubygem自身が古すぎるらしい。rubygem自身をアップデートするには--systemが必要とのこと。
gem update --system
これでRubyGemsが0.9.4に上がった。
C:\>gem install rmagick
Successfully installed rmagick, version 1.15.9
うむ。すんなりインストールに成功した。
はまり道その2。
http://dev.rubyonrails.org/ticket/8500にあるNoMethodErrorが出てプロジェクトを作成できない。
lib/rails_generator/options.rb:32:in `default_options': undefined method `write_inheritable_attribute' for Rails::Generator::Base:Class (NoMethodError)
なんかActiveSupportがロードできないようだ。
irbでrequireしてLoadErrorの内容を見ろというアドバイス。
You're missing some Ruby packages and it's preventing Active Support, which has write_inheritable_attribute, from loading.
Try
require 'rubygems' require 'activesupport'in irb and see whether it raises a LoadError.
が、activesupportなんてファイルはないと言われるorz
C:\InstantRails\rails_apps>irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'activesupport'
LoadError: no such file to load -- activesupport
from C:/InstantRails/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from C:/InstantRails/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from (irb):2