【Agile】Ruby on rails相談所【DRY】
■ このスレッドは過去ログ倉庫に格納されています
00011
2005/06/13(月) 20:51:40ID:hOTuU4T5まだまだ、日本語の情報が少ないですが、
みんなで、意見を出し合いましょう!!
<英語>
本家: http://www.rubyonrails.org
API: http://api.rubyonrails.com/
Documents&Tutorials: http://documentation.rubyonrails.com/
<日本語>
Rails' wiki: http://wiki.fdiary.net/rails/
ActiveRecordの記事(データベースの操作):
http://jp.rubyist.net/magazine/?0004-RLR
http://jp.rubyist.net/magazine/?0006-RubyOnRails
0405nobodyさん
2006/02/09(木) 23:05:21ID:???0406nobodyさん
2006/02/10(金) 00:27:26ID:???いつ出るんだろ。
0407nobodyさん
2006/02/11(土) 16:03:17ID:???のRails記事を見て勉強してるんですが、下記のようなエラーが出ます、解決法はありますか。
記事の151ページの「検索」でhttp://localhost:3000/item/list?keyword=testにアクセス時
./script/../config/../app/views/item/list.rhtml:4: parse error, unexpected $undefined., expecting ')'
<%= end_form_tag ).to_s); _erbout.concat "\n"
^
./script/../config/../app/views/item/list.rhtml:5: parse error, unexpected $undefined., expecting ')'
_erbout.concat "\n"
^
./script/../config/../app/views/item/list.rhtml:6: parse error, unexpected $undefined.
_erbout.concat "<dl>\n"
0410nobodyさん
2006/02/11(土) 20:40:58ID:???カッコを閉じてない所があるんだろ。
そう書いてあるじゃん。
list.rhtmlの3〜6行目辺りをチェックしてみれ。
0412nobodyさん
2006/02/11(土) 21:46:27ID:???おかしいとこありますか?
<%= form_tag :action=>"list" %>
キーワード: <input name="keyword" value="<%=h @params[:keyword] %>"/>
<%= submit_tag "検索" %>
<%= end_form_tag %>
<dl>
0413nobodyさん
2006/02/11(土) 22:44:38ID:???だから、何か環境がおかしい。
他のページは動くのか?
3行目と4行目をそれぞれ削ってみてもエラーは変わらないか?
0414412
2006/02/11(土) 23:18:19ID:???http://localhost:3000/item/にアクセスしても>>407と同じエラーが出ます
3行目と4行目をそれぞれコメントアウトしてもエラーがでます。
list.rhtmlの7行目以降です
<% for item in @items %>
<dt><%= link_to h(item.title), :url=>item.url %></dt>
<dd><%=h item.description %>
<%= link_to '[Edit]', :action => 'edit', :id => item %>
<%= link_to '[x]', { :action => 'destroy', :id => item }, :confirm => 'Are you sure?' %>
</dd>
<% end %>
</dl>
<%= link_to 'Previous page', { :page => @item_pages.current.previous,:keyword=>@params[:keyword] }
if @item_pages.current.previous %>
<%= link_to 'Next page', { :page => @item_pages.current.next,:keyword=>@params[:keyword] }
if @item_pages.current.next %>
<br />
<%= link_to 'New item', :action => 'new' %>
0415nobodyさん
2006/02/12(日) 00:02:01ID:???どうしたらいいのか分からん。
誰か教えてくださいまし。
0416nobodyさん
2006/02/12(日) 00:05:06ID:???http://localhost:3000/item/でどのActionが動いてるのか分からないんですが。
で、あなたが作った環境で、テストページでも良いから動いたページはあるのですか?
あと、コメントアウトってどうやったのですか?
まさか、
<!--
キーワード: <input name="keyword" value="<<%=h @params[:keyword] %>"/>
<%= submit_tag "検索" %>
-->とか?
ってかRubyがParseに失敗してるんだから、確実なのは実際に行を削除することです。
0418nobodyさん
2006/02/12(日) 01:28:22ID:???http://www.cafepress.com/rubyonrailsshop
0419nobodyさん
2006/02/12(日) 02:12:51ID:???手っ取り早く使いたいならこんな感じで。
class ApplicationController
include HogeHelper
include ActionView::Helpers::TextHelper
end
0420nobodyさん
2006/02/15(水) 13:27:03ID:ym5jAylf関係をあらわしたダイヤグラム図っぽいものって、今どこにあるかわかる人
いますか?
0421nobodyさん
2006/02/15(水) 20:35:32ID:???*.rhtmlファイルのままだと、エラーの原因がわかりにくいと思います。
そこで erb をつかって、*.rhtmlをRubyスクリプトに変換してみることをおすすめします。
具体的には次のようにしてください。
$ erb -x example.rhtml > example.tmp.rb # *.rhtmlをRubyスクリプトに変換
$ ruby -wc example.tmp.rb # Rubyスクリプトをチェック
$ cat -n example.tmp.rb | less # 該当箇所を眺める
あと >>416 がいっているように、行を削除していくことで原因を絞り込むのも有効な方法です。
なお >>407 のエラーから察するに、どこかで '%>' が抜けているものと思われます。
<%= form_tag %>
<%= expr > ← たとえばこんな感じで %> が抜けている
<%= end_form_tag %>
そのせいで、抜けた箇所の直後の '<%=' が残ったままエラーメッセージに含まれているのでしょう。
以上です。遅いレスですが、お役に立てれば。
0422nobodyさん
2006/02/17(金) 13:25:50ID:???http://discuss.joelonsoftware.com/default.asp?joel.3.309321.3
英語あんまり読めんのですが、どんなもんですか?
0423nobodyさん
2006/02/17(金) 13:25:55ID:???の本、近日から全然かわらねぇ……
なんとなく書店に通っているオイラが通りますよ
0425nobodyさん
2006/02/18(土) 00:43:24ID:???1. IT TAKES THE RELATIONAL OUT OF RELATIONAL DATABASE MANAGEMENT SYSTEM
外部キーを自動検出して has_many belongs_to を自動的に設定してほしい、など
(schema の情報だけではどういうリレーションなのか分らないと反論されている)
2. RAILS DOESN'T PLAY WELL. WITH ANYONE. NOT EVEN ITSELF.
一々ウェブサーバを再起動しないとコードの変更が反映されない
(Joel の勘違い。delevepment モードならその場で反映される)
3. YOU CAN'T READ THE FACKING MANUAL BECAUSE THERE IS NO FACKING MANUAL.
API リファレンスやビデオや本はあるがオンラインのマニュアルがない。
4. RAILS ATE MY DATA, OR AT LEAST STOOD IDLY BY WHILE MY DATA WAS EATEN
データに対して何も(例えば validation を)してくれない
(validates_* などを書かなくても自動的にしてくれという主張なのだと思う。
DHH のコメントによれば、schema には validation に十分な情報がないとのこと)
5. THE FIRST RULE OF RAILS IS: DO NOT TALK ABOUT RAILS' RULES!
テーブル名の複数形をはじめとして(暗黙的な)ルールが多い。
6. THERE'S MORE THAN ONE PLACE TO SAY IT
設定が分散されており、ファイル構成が複雑だ。
0426nobodyさん
2006/02/19(日) 06:16:58ID:nRO1Mljkuser_controller.rbの以下の行でNoMethodErrorエラーが
出てしまっています。
> if user?
多分、user変数があるかどうかをチェックしているだけだと思うのですが、
「?」の正しい使い方を調べているのですが、なかなか発見できず・・・
すみません、どう修正すればいいか教えて貰えませんでしょうか。
0427426
2006/02/19(日) 07:05:20ID:???app/application.rb に
include LoginEngine
helper :user
model :user
の記述が抜けていたのが原因っぽいです。
0428nobodyさん
2006/02/19(日) 15:38:28ID:???解決したっぽいけど、むちゃくちゃ老婆心で言うと、
> if user?
っていうのは、「user? というメソッドの返り値が真か?」という意味で、
user という変数とは関係ない。"user?" で一つのメソッド。
0429nobodyさん
2006/02/19(日) 20:27:29ID:???テストとかで使ってるんだけどやたら遅くない?
あれなんとかなんないの?
0430nobodyさん
2006/02/19(日) 20:54:08ID:u7ixHIRh目をつぶらないと・・・って思ってる自分はダメですか?
0431nobodyさん
2006/02/19(日) 21:00:45ID:???Ruby 自体が実行速度に重きを置いていない上に、Rails は開発効率最優先で
内部で eval を使いまくったりしてて、とても速く動くような設計じゃないし。
Rails で遅いのが嫌ならハードウェアを増強して富豪的に解決するしかないような。
0432nobodyさん
2006/02/19(日) 22:00:51ID:???___/ 冫 ∧_∧
∧_∧ _ __ (_ / (´∀` )
( ´∀`)/ ) ) | | // \
( ⊃/ // ∧_∧ (__(_/` |
\__// ( ´∀`) _///
 ̄ ∪ ̄∪ (__(__)
「レ」 「イ」 「ク」
0433nobodyさん
2006/02/20(月) 02:27:34ID:H8qNI+9f共通のテンプレートを使うにはどうすればいいんでしょう?
layouts/application.rhtml を使えば、
全部のコントローラーで同じテンプレートを使えるのは
分かったのですが、もう少し、細かい単位でまとめたいのです。
つまり、
a,b,cコントローラーは、共通テンプレート1
d,e,fコントローラーは、共通テンプレート2
という指定をしたいのですが、、
0435nobodyさん
2006/02/20(月) 18:58:57ID:vRXDRBjP0436nobodyさん
2006/02/20(月) 19:39:23ID:???0437nobodyさん
2006/02/20(月) 20:01:04ID:???0438nobodyさん
2006/02/20(月) 20:31:37ID:???0439nobodyさん
2006/02/20(月) 21:08:43ID:vRXDRBjPまだ出てないだろ?少なくてもジュンク堂にはなかった。
0440nobodyさん
2006/02/20(月) 23:19:43ID:???「rails layout」で検索して10件ぐらい見ればどこかに書いてあるだろ!
検索もせずに質問してもイチイチ誰も答えねーつーの。
コントローラ内で layout 指定するときに、メソッドかブロックで動的に指定できるんだよ。
例えば、app/views/layouts/{abc,def}.rhtml があるとして、
app/controllers/application.rb:
class ApplicationController < ActionController::Base
layout proc{|c| %w( a b c ) === c.controller_name ? "abc" : "def" }
end
て入れとけば動くから、あとは case 文でも何でも好きなようにやってくれ。
意味的に分類できるなら、コントローラをサブディレクトリに配置して、ディレクトリ名で
判断してもいいと思うぞ。コントローラ追加時に上記を変更しなくてもいいし。
もっともその場合は、サブディレクトリ毎に1つ継承用のコントローラを作っておいて
そいつが layout "dir1" して、各コントローラは Base でなくそいつを継承すればいいぞ。
あと、コントローラと同名のレイアウトファイルがあると、layout の制御無視でそっちを
読んでしまうので、注意して下さいね。
0442433
2006/02/21(火) 01:10:44ID:???>>440
ありがとうございます!
サブディレクトリ単位でもコントローラーをまとめられるんですね。
これは便利っすね。↓検索してみました
http://www.fdiary.net/ml/rails/msg/879
0443nobodyさん
2006/02/21(火) 15:33:55ID:???ttp://d.hatena.ne.jp/secondlife/20060221/1140500355
25日までワクテカで待つよ。
0444nobodyさん
2006/02/21(火) 16:05:16ID:???0447nobodyさん
2006/02/21(火) 17:15:02ID:???はてなの中のひと
http://d.hatena.ne.jp/secondlife/20060104/1136351145
0452nobodyさん
2006/02/21(火) 22:35:17ID:???0453nobodyさん
2006/02/22(水) 12:14:53ID:???0454nobodyさん
2006/02/22(水) 12:23:06ID:???0455nobodyさん
2006/02/22(水) 17:09:50ID:???0456nobodyさん
2006/02/22(水) 17:22:02ID:???はてなSNS (Powered By Ruby on Rails.)
http://sns.hatelabo.jp/
0457nobodyさん
2006/02/23(木) 01:04:46ID:???なれば、あなどりがたいかいしゃになるだろうなあ。
0458nobodyさん
2006/02/23(木) 02:56:35ID:???http://i.loveruby.net/d/20060220.html#p10
0460nobodyさん
2006/02/23(木) 06:04:48ID:???だれのあなをとるのでつか?
0461nobodyさん
2006/02/23(木) 09:38:03ID:???0462nobodyさん
2006/02/23(木) 09:39:59ID:???25日前に買った人からの報告ヨロ
0464nobodyさん
2006/02/23(木) 15:13:32ID:???アクション以外のメソッドを定義しちゃってもいいんでしょうか。
例えば class FooController で def bar() した場合、
ブラウザで http://localhost/foo/bar とかアクセスできてしまうわけですよね。
もちろん実際には対応するviewがなくてエラーになるんでしょうが、アクション以外のメソッドを起動してしまうのがなんか気持ち悪いんですが、そんなことないですか?
0465nobodyさん
2006/02/23(木) 15:20:29ID:???定義してよい。protected で定義すればアクセスできない。
いや、view から controller.bar とかしたいから public じゃないと
ダメなんすよ。というあなたには、、、
つ hide_action :bar
0466nobodyさん
2006/02/23(木) 16:15:05ID:???なるほど!アクセス制限かけちまえばいいのか。
大変参考になりました。
調子に乗って質問しますが、それではObjectクラスで定義されているようなメソッドはどうするんでしょうか。
これらはhide_actionで隠されている?
0467nobodyさん
2006/02/23(木) 16:37:22ID:???0469nobodyさん
2006/02/23(木) 17:17:15ID:???正解!!
実行可能なアクションは、大雑把に言うとこうなってます。
YourController.public_instance_methods - (ActionController::Base.public_instance_methods + [hide_action されたもの])
つまり、ApplicationController 以降のサブクラスで新たに定義された
public な instance メソッドだけがアクションとして認識されます。
なので、Object の public instance methods にあるものは予約語扱いで、
アクションとしては使えないことになりますね。例えば inspect とか。
って、別にあなたのために調べたんじゃないんだからね。
ちょっと興味あったからだけなんだから、勘違いしないでよね。
0470nobodyさん
2006/02/23(木) 17:44:01ID:???ちょっとだけスレに恩返し。*.rhtmlの文法チェックをするには
erb -x file.rhtml | ruby -c
とすればいい。どっかのblogに載ってたテクニックだけど。
0471nobodyさん
2006/02/23(木) 18:17:54ID:???0472nobodyさん
2006/02/23(木) 19:04:04ID:???0473nobodyさん
2006/02/23(木) 20:05:49ID:???viewの中に以下のような記述がありました。
<%= link_to 'Edit', :action => 'edit', :id => @recipe %>
ここで「:id=>@recipe」というのが気になるんですが、これは「:id=>@recipe.id」ではないでしょうか。
いや、動くんですけど、なんか違和感が。
チュートリアル(Rolling on Rails)だと :id=>@recipe.id なんですが、今の推奨は :id=>@recipe なんでしょうか。
教えてえらいひと。
0474nobodyさん
2006/02/23(木) 22:10:10ID:???って 書き方、どういう意味なの?
マニュアル探してもどこに書いてあるんやら。
0475nobodyさん
2006/02/23(木) 22:18:38ID:???本来は { :bar => "hoge" } という書き方の省略型です。
この場合、キーが「:bar」(Symbolクラス)、値が「"hoge"」(Stringクラス)であるハッシュオブジェクトになります。
例えば
def foo(x, y, options={})
puts "x=#{x}, y=#{y}"
options.each { |key, val| puts "key=#{key}, val=#{val}" }
end
というメソッドがあったとき、本来なら
foo(10, 20, { :key1=>"val1", :key2=>"val2" })
と書きますが、Rubyではこれを省略して
foo(10, 20, :key1=>"val1", :key2"=>"val2")
と書くことができます。 さらに丸カッコも省略して
foo 10, 20, :key1=>"val1", :key2"=>"val2"
と書けます。これがよく使われます。
なおこれはRailsとは関係なく、Rubyのはなしです。Rubyのマニュアルをご覧ください。またはRubyスレでお聞きください。
以上です。
0476nobodyさん
2006/02/23(木) 22:24:02ID:esbdwg11それよりも
Member.find_by_sql([<<-SQL, params[:name], params[:age]])
SELECT *
FROM members
WHERE name = COALESCE(?, name)
AND AGE(birthday) = COALESCE(?, AGE(birthday))
SQL
とかの <<-SQL をはじめてみたときのが、びっくりだった
0477nobodyさん
2006/02/23(木) 22:44:15ID:81PJfTdI0478nobodyさん
2006/02/23(木) 22:45:24ID:???0480nobodyさん
2006/02/24(金) 12:20:33ID:???実行結果が同じなのは実行してみればわかるんだけど、なぜそうなっているのかがわからないので、質問してみました。
ここ読めばわかる、というのでもいいです。
0481nobodyさん
2006/02/24(金) 12:49:05ID:???0482nobodyさん
2006/02/24(金) 15:42:14ID:???http://jp.rubyist.net/magazine/?0008-RubyOnRails#l13
0483nobodyさん
2006/02/24(金) 17:31:20ID:???どうもありがとうございます。この部分ですね。
> id に関連して、もうひとつ。 url_for の引数として :id をキーにして指定するとき、
> 値として渡す ActiveRecord オブジェクトに .id を付けて数値として渡す必要はなく、
> ActiveRecord オブジェクトのままでもよくなった。
>
> url_for は link_to や form_tag などの引数の処理に用いられているのだが、 例えば
> <%= link_to "Edit", :action => "edit", :id => @entry.id %>
> これを
> <%= link_to "Edit", :action => "edit", :id => @entry %>
> と書けるようになった。
> 初めてこれを見たときは違和感があったが、たった3文字でもタイプ数が減ると楽だ。
>
> この機能は、ActiveRecord の CHANGELOG によれば、 ActiveRecord::Base#to_param
> # Enables Active Record objects to be used as URL parameters in Action Pack automatically.
> alias_method :to_param, :id
> によるもので、1.9.0 以降で使えるようになった。
つまり link_to などでは引数のオブジェクトに to_param() を実行してHTTPパラメータ形式に変換するのだが、ActiveRecord::Base クラスではこれが id() へのエイリアスになっている。
そのため、link_to() の引数にモデルオブジェクトを指定すると、to_param() が呼ばれ、エイリアスである id() が呼ばれ、めでたく id に変換されるということですね。
ちょーわかりました。なんて役に立つスレなんだ。
0484nobodyさん
2006/02/24(金) 18:53:44ID:???0485nobodyさん
2006/02/24(金) 19:19:23ID:bCQSSv0+0486nobodyさん
2006/02/24(金) 22:22:44ID:???0487nobodyさん
2006/02/24(金) 23:24:46ID:???0488nobodyさん
2006/02/25(土) 10:39:00ID:???0489nobodyさん
2006/02/25(土) 14:02:31ID:???インストールして、一応動くようになったんだけど、なぜかIEでだけpermalink(個別記事)
の表示ができなくて真っ白な画面になる。Firefoxだと問題なく見ることができる。
不思議なことに、WEBrickベースで動かすとIEでも問題なく見ることができてApache+
FastCGIではpermalinkを見ることができない。
どこから手をつけて調べればよい?
0490nobodyさん
2006/02/25(土) 14:48:13ID:???0491nobodyさん
2006/02/25(土) 20:29:10ID:???0492nobodyさん
2006/02/25(土) 20:39:45ID:KnTTy4O7単純に発売日みて出してるだけかもしれないけど。
0493489
2006/02/25(土) 20:45:37ID:???どうやらエントリーのタイトルが日本語だと駄目っぽい。というわけで
Rails本訳本の日本語を扱うための注意事項を参考に、ApplicationControllerに
set_charsetを追加してやったところ無事に表示されるようになりました。
0494nobodyさん
2006/02/25(土) 21:00:12ID:???ttp://www-06.ibm.com/jp/developerworks/linux/050708/j_l-rubyrails.html (Ruby on RailsによるWebアプリケーションの高速開発)
↑を参考にしてやっているのですが、設定を終えてlocalhost:3000/contact/にアクセスすると
Mysql::Error: Lost connection to MySQL server during query: SELECT COUNT(*) FROM contacts
というエラーが出ます。
>215で同じ症状が出ていたので>223に出ていた対策をしようと思ったらその記述が見つかりませんでした。
どなたか同じような症状で改善された方、改善方法をご存知の方いませんか?
ちなみに環境は
・ruby 1.8.2
・rails 1.0.0
・MySQL 4.1.18
0495nobodyさん
2006/02/25(土) 21:27:08ID:???当方、MacOS X 10.4, ruby1.8.4, rails1.0.0 MySQL5で問題なく動いてます。
MySQLのサーバが上がってないってことじゃないよね。
Rubyは1.8.4のソースとってきて自分でコンパイル&インストールしたほうがいいです。
1.8.2だと問題ありじゃなかったっけ?違ってたらごめん。
0496494
2006/02/25(土) 21:37:55ID:???MySQLサーバは上がっています。
(netstattとpsで確認して、mysqlコマンドで操作ができたので上がっているかと…)
>Rubyは1.8.4のソースとってきて自分でコンパイル&インストールしたほうがいい
なるほど。今からやってみます。
0497nobodyさん
2006/02/25(土) 21:59:31ID:???渋谷のbook1stでは売り切れ。
「午前中はあったんですけどねー」とは店員さんの弁。
「何冊あったんですか?」
「昨日、7冊から10冊入ってきたばかりなんですけど。。。」
「まだ売れるはずだから、発注かけといたほうがいいですよ。」
「そうします。」
仕方ないんで、文教堂でGET。残り1冊だった。
0499nobodyさん
2006/02/25(土) 23:54:57ID:???まじで?すごいあてずっぽうな回答だったんだけど。
うごいてなによりです。
ところでjascaffoldなんていうものがあるんだね。本で紹介されていて、はじめてしった。
0500nobodyさん
2006/02/26(日) 00:59:06ID:???池袋ジュンク堂で買ったけど
残りは平積み1冊、棚に3冊でした。
平積みのところがRailsの本だけ明らかに
少なくなってたし明日には売り切れちゃうんじゃないだろうか。
0501491
2006/02/26(日) 05:14:46ID:???おお、俺も2軒まわったうちの1軒のうちが渋谷のbook1stです。
午後一番くらいで行って、店員に在庫あるか聞いたら
バタバタと走り回って時間かけて探してくれたけど、
結局、「売り場にはまだ入ってきてないみたいです」と
言われました。
0502nobodyさん
2006/02/26(日) 15:27:17ID:???0503nobodyさん
2006/02/26(日) 17:01:25ID:???■ このスレッドは過去ログ倉庫に格納されています