トップページ⇒php
1001コメント389KB

【Ruby】Ruby on Rails Part7

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/04/30(木) 23:07:27ID:???
■前 Ruby on Rails のスレ が
http://pc11.2ch.net/test/read.cgi/php/1224838013/

■参考サイト
<英語>
本家:http://www.rubyonrails.org
API document:http://api.rubyonrails.com/
開発者のblog:http://weblog.rubyonrails.org/
参考wiki:http://wiki.rubyonrails.org/rails

<日本語>
Rails' wiki: http://wiki.fdiary.net/rails/

■参考スレ(プログラム板)
Rubyについて Part 35
http://pc12.2ch.net/test/read.cgi/tech/1238194350/
Ruby 初心者スレッド Part 27
http://pc12.2ch.net/test/read.cgi/tech/1238632943/l50
0544nobodyさん2009/07/03(金) 13:25:36ID:???
>>532
同じ画像を国内のレンサバとlinodeにおいて、
ブラウザからアクセスしたときのタイムラグがわかるとありがたいです。

ホップ数を測るというのはlinode.comに対してということでしょうか。
サービス用のインフラと、自社サイトのインフラが同じかどうかわからないと思うのですが。
0545nobodyさん2009/07/03(金) 13:34:22ID:???
>>543
本人?
これ手伝おうかと思ったけど、
一番下の

>http://github.com/takeru/docrails/tree/master
>最終的にはここに入れます。

を読んでやる気なくした。

何で全部個人の手柄なんだよ。
0546nobodyさん2009/07/03(金) 14:00:42ID:???
本家に持っていく経由地としてそのリポジトリがあるだけじゃない?
なんなら545が最終的なまとめをやってあげれば?手柄ゲットだぜ。

1行ずつ訳すって中学の英語の授業みたいだなw
おもろいっw訳がガタガタになりそうだが。
0547nobodyさん2009/07/03(金) 14:13:25ID:???
>「最終的には」ここに入れます。
ってことは自分の手柄にするのが目的なんだろ。
0548nobodyさん2009/07/03(金) 14:48:17ID:???
ちょいと細かいことで、お聞かせ願いたいのですが、
共通な定数ってどこに書いたらよござんすか?

今は、コントローラーから参照するものはapplication_controller.rbに書いているんですが、
その他からも参照するようなときはどこに書いたものかと…。
0549nobodyさん2009/07/03(金) 14:48:37ID:???
>>543 のサイトの本人でございます。
親切な方がメールでこのスレで紹介されたと教えてくれました。

成果を独り占めする気はございません。
最終的には本家に入れば良いと思っています。
もちろん日本語版翻訳協力者のリストを付けるべきだと思っています。
0550nobodyさん2009/07/03(金) 14:55:02ID:???
過去スレから見つけてきた。

Ruby on Rails のスレ が
http://pc11.2ch.net/test/read.cgi/php/1207425569/792-796

792 名前:nobodyさん[sage] 投稿日:2008/08/18(月) 22:54:04 ID:???
RAILS_ROOT/libが $: に含まれてるからそこにおけばいいんじゃない?
名前をお約束通りに付けておけばconst_missingを捕まえて勝手にrequireするし。

795 名前:791[sage] 投稿日:2008/08/19(火) 23:50:18 ID:???
>>792
>>793

レスありがとう。

今はlibの下に置いてApplicationControllerでincludeしてるんだけど、「お約束通り」の命名にすればそれが不要ってこと?
定数名にRailsの命名規約があるの??

796 名前:nobodyさん[sage] 投稿日:2008/08/20(水) 08:25:05 ID:???
定数というか、モジュール/クラス名がconst_missingのとき、
その名前をオール小文字/単語境界をunderscore化、ネストをディレクトリ
とみなしたファイルがrequireされる。

たとえば、いきなりinclude FooBar::Bazとか書いて未定義の定数を使うと、
require 'foo_bar/baz' される。

----------------
ということは、lib/以下に common.rb みたいなの置いてmodule Common内に定数を書き、
使うところで(ApplicationControllerとかで?)
include Common して、定義してある定数 Hoge を使うか、
Common::Hoge を直接使う、ということでいいんでしょうか?
0551nobodyさん2009/07/03(金) 15:12:18ID:???
>>549
酷い自演を見た
0552nobodyさん2009/07/03(金) 15:16:54ID:???
定数をlib以下に切り出すってのはさすがに抵抗ある。
そこまで規約に従う理由があるのか?
0553nobodyさん2009/07/03(金) 15:54:42ID:???
定数Hogeの内容にもよると思う
0554nobodyさん2009/07/03(金) 16:34:28ID:???
>>552
$RAILS_ROOT/lib にクラスとかモジュールの実装を置くのは普通だと思うが、なんで?
rubyはクラスもふつう定数だがクラスは動的に書き換えられるのでなんか混乱するな。
0555nobodyさん2009/07/03(金) 16:42:35ID:???
これからRubyを覚えようと思うのですが、Rails使うには、Rubyが分かってないとダメですか?
0556nobodyさん2009/07/03(金) 17:24:33ID:???
libはあくまでライブラリじゃないの
自分で定義したものはやっぱりapp以下に置くのが自然に思うけど
0557nobodyさん2009/07/03(金) 18:01:42ID:???
lib/ は自分が書いたものの中で、Modelとか、Controllerとか、Helperとかに含まれないものを置く場所。
READMEに書いたある。
0558nobodyさん2009/07/03(金) 18:37:16ID:???
外部ライブラリはvendor/plugins以下に、自分が用意したものはlib以下に、って解釈でいいのかな?
0559nobodyさん2009/07/03(金) 18:47:47ID:???
>>558
vendor/pluginsはプラグインとして使えるように作られたものを置くところ。
自分でプラグインを作ってもOKなので、外部製とは限らない。

app以下はやっぱり
app/models(ActiveRecord::Baseのサブクラス)
app/controllers(ActionControllerのサブクラス)
app/helpers(ヘルパとして使うmodule)
を置くところであって、それ以外はlib/でよいだろう。

もとの質問の定数定義についてだけど、定数の名前が重要で値自体にさして
意味がない(互いに異なりさえすればよい)場合は 定数の名前に使う予定の
ものに相当するシンボルを使うことも一考に値する。
0560nobodyさん2009/07/03(金) 19:37:06ID:???
Rails pluginの管理はみなさんどうしてますか?
RubyGemsで入るRaptというのを使おうとしたのですが、githubには対応してなさげ…

githubのものでgemが作られてるものは、RubyGemsで入れればいいんでしょうけど、
小さいプラグインだとないものもあります。

script/pluginで手動管理でしょうか?
0561nobodyさん2009/07/03(金) 22:48:31ID:???
script/pluginだと何かまずいことがあるの?
個人的にはgemで用意されてるプラグインでも、汎用なものでなければscript/pluginでアプリケーションに個別に入れてる。
0562nobodyさん2009/07/04(土) 07:23:40ID:???
Rails2.3.2にはdispatch.fcgiがないのですが、fastcgi経由で動作させるためには
どっかからdispatch.fcgiをコピーしてくるのでしょうか?
ちなみに.htaccessもないもよう。
0563nobodyさん2009/07/04(土) 11:26:40ID:???
>>562
これっすかね?

Various files in /public that deal with CGI and FCGI dispatching are no longer generated
in every Rails application by default (you can still get them if you need them by adding
--with-dispatches when you run the rails command, or add them later
with rake rails:generate_dispatchers).

http://guides.rubyonrails.org/2_3_release_notes.html


Ruby on Rails 2.3 Release Notes
http://guides.rubyonrails.org/2_3_release_notes.html
0564nobodyさん2009/07/04(土) 12:20:26ID:???
もう触れるなよ。どうせ聞きっぱなしなんだから。
0565nobodyさん2009/07/04(土) 12:32:58ID:???
おれもそう感じてた
05665622009/07/04(土) 12:51:27ID:???
>>563
なるほど、サンクス!
0567nobodyさん2009/07/04(土) 19:22:01ID:???
販売か生産管理システム用のフレームワークってありますか?
0568nobodyさん2009/07/04(土) 22:48:17ID:???
Passenger(2.2.1)+VirtualHost使ってるのだが、

DirectoryIndex index.xhtml

ってやってもきいてくれずに404エラーになる。index.xhtmlは間違いなくある。
VirtualHostとDirectoryの両セクションコンテナでやってみたのだが。
これどうにかならないだろうか。おれだけ?
0569nobodyさん2009/07/05(日) 00:35:44ID:???
2.0に対応したRails本少ないなぁ…英語勉強するしかないかな
0570nobodyさん2009/07/05(日) 00:46:18ID:???
rubyしっかり勉強してソース読むのが王道
0571nobodyさん2009/07/05(日) 02:56:44ID:???
いや、それは無いだろさすがに
05725682009/07/05(日) 10:36:21ID:???
トップページだけ対処ということでRewriteにしてしまった
0573nobodyさん2009/07/05(日) 10:51:16ID:???
>>570
それ、なんて罰ゲーム?
0574nobodyさん2009/07/05(日) 11:38:01ID:???
railsのソース汚いよね。達人プログラマーでもあの程度なのかと思ってしまった。
0575nobodyさん2009/07/05(日) 12:38:44ID:???
David ThomasがRails自体を開発してるのか?Railsでの開発は好きらしいが。


まあ、口だけなのはわかってるけどなw
0576nobodyさん2009/07/05(日) 14:13:27ID:???
>>569
入門でいいなら、

・逆引き本
・Railsレシピ
・定番のAgile Web Development with Rails 3版を見ながらわからないところは、2版の日本語版を見る

俺はこんな感じで進めている。

>>574
汚いっちゅーか、黒魔術つかいすぎだと思う
0577nobodyさん2009/07/05(日) 19:27:05ID:???
rubyとしては見ては(ry
0578nobodyさん2009/07/05(日) 23:56:06ID:???
こんなパラメタ受け取りたいんだけど
params = {
 :hoge => [
  { :title => "タイトル1",
   :items => ["項目1","項目2",…]
 ]
}

上手いやり方知らない?
これだと上手くいかない
<%= text_field_tag 'hoge[][title]' %>
<%= text_field_tag 'hoge[][items][] %>
0579nobodyさん2009/07/05(日) 23:58:51ID:???
途中送信してしまった

こんなパラメタ受け取りたいんだけど
params = {
 :hoge => [
  {
   :title => "タイトル1",
   :items => ["項目1-1","項目1-2",…]
  },
  {
   :title => "タイトル2",
   :items => ["項目2-1","項目2-2",…]
  },
  …
 ]
}

上手いやり方知らない?
これだと上手くいかない
<%= text_field_tag 'hoge[][title]' %>
<%= text_field_tag 'hoge[][items][] %>
0580nobodyさん2009/07/06(月) 00:46:11ID:???
railsのコード読んだけどインデントの規則おかしくない?
0581nobodyさん2009/07/06(月) 10:08:07ID:???
>>580のエディタのtab幅の設定があってないとエスパーしてみる
0582nobodyさん2009/07/06(月) 10:19:10ID:???
>>581
Rails 2.3.2 だと、インデントにTABを使っている(grep '^TAB文字' で判断)のは
actionpack-2.3.2/lib/action_view/helpers/form_options_helper.rb
activerecord-2.3.2/lib/active_record/fixtures.rb
activesupport-2.3.2/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb
のみだった。
0583nobodyさん2009/07/06(月) 10:20:51ID:???
どこを見たのか知らないけど普通だと思うが
0584nobodyさん2009/07/06(月) 14:29:53ID:???
「おかしい」「普通」という感想だけじゃ話にならんな。
0585nobodyさん2009/07/06(月) 15:02:08ID:???
いや普通はいいじゃんw
多少の違いはあるかもしれんが、
ほとんどのプログラマは「普通」の感覚があると思うぞ。
0586nobodyさん2009/07/06(月) 15:21:41ID:???
タブ文字使って自力でインデントする習慣の人は
2文字じゃ困るって話じゃないかな
0587nobodyさん2009/07/06(月) 17:07:12ID:???
rubyでヲレ書式に整形するスクリプトでも書けば済む話。
0588nobodyさん2009/07/06(月) 18:09:23ID:???
仕事場でも未だにタブでインデントする奴いるけどすげー迷惑
とくに年寄りにその傾向があるようだ
0589nobodyさん2009/07/07(火) 03:00:09ID:???
Java でも C でもいいけど、超有名なオープンソースソフトウェアでも、
ソースはけっこう汚いこともあるよ(ロジックが汚いという意味ではない)
インデントとかコメントのルールとか、全然統一取れていないこともある

NTT 系の仕事だったら、NTT のやつらに絶対だめ出し食らうレベル

>>588
Linux(Unix)が開発環境となっている環境(CとかPHP/Rubyが多いかな)は、
・インデントはタブ
・vi なり Emacs で、タブ幅を4
を前提というかコーディング規約にしているところは多いね。

そういうのをWindowsのエディタや Eclipse で見ると崩れて見える。
(設定すればいいのだが)

んで、文句をいうと袋だたきにあう

どっちがいいか、というのではなく、文化というか習慣の問題だと思うが
0590nobodyさん2009/07/07(火) 08:29:50ID:???
>>589
# vim:set tabstop=2 shiftwidth=2 expandtab:
Rubyでviなら↑がデファクトスタンダードだと思うのだが。
0591nobodyさん2009/07/07(火) 08:31:45ID:???
知らんがな
0592nobodyさん2009/07/07(火) 08:57:12ID:???
規約にしてるのに設定しないで文句言うって馬鹿ですか?
0593nobodyさん2009/07/07(火) 10:00:13ID:???
viやemacsも、デフォルトのタブ幅は8のはずだから、
Windows使ってるから特別にデフォルトでも4タブが崩れないようにしろって主張は、
ちょっと意味がわからない。
0594nobodyさん2009/07/07(火) 18:05:00ID:???
>>593
タブ幅が8で許されるのはいつの時代だよw
0595nobodyさん2009/07/07(火) 18:06:15ID:???
手元のRuby 1.8.7だと大丈夫なのですが、サーバーの1.8.6環境だと
おきるエラーがあります。

1.8.6系の問題でよくトラブるので、サーバーも1.8.7にあげる予定なのですが、
原因を知っておきたくてご相談します。

下記ソースの
    @sub_items = sub_items.all
のところで、ログ見ると↓見たいに言われてます。

LocalJumpError (no block given):
  app/controllers/sub_items_controller.rb:5:in `index'

下記のようにすると問題なく動くのですが…。
    @sub_items = @item.sub_items.all


以下、ソース
(config/routes.rb)
  map.resources :items, :has_many => :sub_items

(app/models/sub_item.rb)
class SubItem < ActiveRecord::Base
  belongs_to :item
end

(app/models/item.rb)
class Item < ActiveRecord::Base
  has_many :sub_items
end
05965952009/07/07(火) 18:08:13ID:???
(app/controllers/sub_items_controller.rb)

class SubItemsController < ApplicationController

  # GET /sub_items
  # GET /sub_items.xml
  def index
    @sub_items = sub_items.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @sub_items }
    end
  end

  :

  # フィルタで必ず実行させる
  before_filter :must_item_present

  private
  def must_item_present
    @item = Item.find(params[:item_id])
  end
  
  def sub_items
    @item.sub_items
  end

環境: Rails 2.3.2, 鯖: Ubuntu 8.04LTS Ruby 1.8.6, テスト環境: Windows XP SP3, Ruby 1.8.7
0597nobodyさん2009/07/07(火) 20:24:32ID:???
質問よろしいでしょうか?

複数のfixtureで共通するERBコードをDRYしてどこかに書きたいものなのですが、
どこに置いたものでしょうか?

というか、fixture微妙につかいにくくないですか?
みなさん、どうしてます?
05985972009/07/07(火) 20:58:43ID:???
上でも出てたけど、factory girl使えってことなのかあ・・・

factory girl使った場合、rake db:fixtures:load 相当はどうやったらいいいもんですかね・・・
0599nobodyさん2009/07/07(火) 21:11:14ID:i/gOlMKP
2.2なんだが。 

view:
<% for .... %>
<%= check_box_tag('hoge_id[]',hoge.id) %>
<% end %>

複数のチェックボックスを動的に生成しているこのチェックボックスを
一つは必須入力にしたいのだがvalidateがうまくいかない。。orz

model:
validates_acceptance_of :hoge_id

↑↓動作せず。。。

:model

def validate
if read_attribute(:hoge_id).nil?
errors.add("nilnil")
end

エラーをみるとparamは hoge_id で渡ってきているのだが
DBにhoge_idがないためチェックが通らない?
(DBにはho_idという名前にしてある)

hoge_id[] にするとNoMethodErrorだし。

助けて・・・m(__)m
0600nobodyさん2009/07/07(火) 21:25:49ID:QCi36J2S
Ruby 1.8.7 rails 2.3.2
test環境作ろうと gemで autotest-rails を入れたんだが、
使ってみると、色も無い、ポップアップもなくて殺風景なんだが、
にぎやかに error 教えてくれるものないかな?
0601nobodyさん2009/07/08(水) 09:57:29ID:???
Windows + Netbeans + RoR + CRuby + mongrel で

uri = URI("http://localhost:3000/funyafunya/")
res = uri.read

こんなふうにすると uri.read で止まっちゃうんすよね。
mongrel が一度に一コネクションしか処理してくれないからっすかぁ?
やっぱ、そうっすよねぇ。

どうやったらぁマルチにできますか?無理っすかぁ。
0602nobodyさん2009/07/08(水) 11:14:05ID:???
>>601
どーしてもHTTP経由がいいなら、mongrelを複数立ち上げてロードバランサを前に置くか、passengerにするか。
HTTP経由でなくてもいいなら、render_component とか。

render_component はプラグインになったんで注意な。
06036012009/07/08(水) 19:55:48ID:???
別のプロジェクトにしますた。
0604nobodyさん2009/07/08(水) 21:34:05ID:???
ぽーとかえてにこたちあげればよかたね
0605nobodyさん2009/07/09(木) 00:50:39ID:???
昔 2.1.0 の頃に少し挑戦しました。
いまは 2.3 で、トランザクションのネストができると聞きました。

質問です!
トランザクションってControllerでするのでしょうか?
それともModelでするのでしょうか?
2.3 以前と以降で話が違いますか?

ついでにもうひとつお願いします。
ttp://webtama.jp/series/railstips/articles/31
「そうでなければ、ネスト処理は単純に
親トランザクションの一部として振舞います(Rails2.2の動作)」
↑これって、どういうことなのかわかりやすく教えてください。
2回目のトランザクションの開始と終了が無視されて、
1回しかトランザクションが処理されていないという意味でしょうか。
0606nobodyさん2009/07/09(木) 09:59:54ID:???
コントローラは処理の振り分け、
ビューは画面表示、
それ以外はモデルだと思えばいいよ。

一つに二つの質問は面倒。
0607nobodyさん2009/07/09(木) 17:41:28ID:???
ルーティングでコントローラーをネストした環境で、
url_forやbutton_toなどを使おうとしたのですが、
どのように引数を記述したものかわかりません。
どなたか、ご助言いただけないでしょうか?

例えば、/items/14/sub_items/45 のような場合は、
button_to("hoge", [@item, @sub_item]) のように記述すればいいのですが、

/items/14/sub_items/45/hage のようなアドレスにアクセスしたい場合、
どのように記述したものでしょうか?

button_to("hoge", :controller => [@item, @sub_item], :action => hage)

また、この辺のことを script/console で試してみようと、
下記のように script/console でurl_forなどヘルパーを実行しようとするとエラーが起きてしまいます・・・

script/console内でヘルパーをテストする方法 - yamazのRails日記 - Rubyist
http://rubyist.g.hatena.ne.jp/yamaz/20060818

>> helper.url_for :controller => 'items'
NoMethodError: You have a nil object when you didn't expect it!
The error occurred while evaluating nil.url_for
 from c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/helpers/url_helper.rb:85:in `send'
 from c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/helpers/url_helper.rb:85:in `url_for'
 from (irb):55
 from :0
0608nobodyさん2009/07/09(木) 17:52:22ID:???
RESTfulなルーティングを定義していれば、
item_subitem_path(@item, @sub_item) # or _url
で。

consoleで使うには
app.item_subitem(以下ry

06096072009/07/09(木) 20:24:00ID:???
>>608
ありがとうございます!
_path使って /items/10/sub_items/11 のようにはアクセスできるようになりました。
script/consoleでも動きました。

/items/10/sub_items/11/hage のようなアドレスですが、
Rails 2.3だと、:format指定でいけました。
item_subitem_path(@item, @sub_item, :format=>:hage)

ただ、
/items/10/sub_items/11.hage

というようなアドレスになってるんですが、大丈夫なのかなこれ…。
0610nobodyさん2009/07/09(木) 21:51:02ID:???
:formatは、URLで拡張子のように見えるところに使うという規約。
同じURLでも拡張子によってHTMLやJSONやXMLを返せるようにするためのもの。

hageの部分はそのままでは表せないので
config/routes.rb に
map.resources :items do |item|
item.resources :sub_items, :member => { :hage => :get }
end
と書くと
hage_item_sub_item_path(:item_id, :id)
で
/items/:item_id/sub_item/:id/hage
を表せる。
この場合、 SubItemsController#hageが、HTTP Getで呼ばれる。
0611nobodyさん2009/07/09(木) 21:52:04ID:???
× .../sub_item/...
○ .../sub_items/...

どういう規則が定義されているかは rake routes で。
0612nobodyさん2009/07/09(木) 22:23:18ID:???
hageはアクションじゃなくて単なるパラメータの1つだ、という場合は
RESTfulなルーティングからそろそろ外れてくるので、独自に書く必要が
出てくると思う。

item.myaction 'items/:item_id/sub_items/:id/:para',
:action => 'myaction', :controller => 'sub_items'
とか指定すれば
item_myation_path(item, sub_item, :para => 'hage')
#=> /items/:item_id/i/sub_items/:id/:para
0613nobodyさん2009/07/09(木) 23:34:06ID:???
rake routes
0614nobodyさん2009/07/10(金) 02:38:02ID:UisZbpVA
>>490 ってエラーになるけど (paged_usersなんてメソッドないって)
原文ではなぜエラーにならないのか??

いまいちルーティングの書き方を理解できてない俺。
0615nobodyさん2009/07/10(金) 05:02:00ID:???
>>614
たしかに、
map.paged_users '/users/pages/:page'
だとエラーになる。

map.paged_users '/users/pages/:page', :controller => 'users', :action => 'pages'
みたいに書けば動く。
使うときは<%= paged_users_url(:page => 1) %>
(rails 2.2.2で確認)
0616nobodyさん2009/07/10(金) 08:40:52ID:???
修正ごとに、動作を確認したくて
サーバー起動して、
http://127.0.0.1:3000/
を表示させているんですが、
結構時間がかかります。

何かお手軽な方法はありませんか?
0617nobodyさん2009/07/10(金) 10:33:57ID:???
クラス定義の変更の場合、developmentモードならリロードされる
(config.cache_classes = false)ので、再起動の必要はない。

スタイルシートの狂いの視認とかでなければテストを書いて走らせるだけで済むかも。
0618nobodyさん2009/07/10(金) 12:42:54ID:???
>>616
Webrick使うのをやめてThinにする。
0619nobodyさん2009/07/10(金) 14:45:40ID:???
修正したらキャッシュ無効だから遅いのは普通。
0620nobodyさん2009/07/10(金) 16:42:14ID:???
>>616
developmentモードなら、修正ごとにサーバー起動する必要ないよ。
06216072009/07/10(金) 16:58:44ID:???
サンクス

>>612-613
rake routesでも確認してみています。

少し疑問があるのですが、
ネストしていない状態で、コントローラーにメソッド hage を勝手に定義して、
 :action => :hage, :id => @item
のような感じでurl_forなどに渡すと、>>612のように定義しなくてもちゃんとルーティングしてくるのですが、
これは、config/routes.rbの中の下記記述によるものなのでしょうか?

map.connect ':controller/:action/:id'
0622nobodyさん2009/07/10(金) 18:26:18ID:???
そゆこと。
0623nobodyさん2009/07/10(金) 19:26:54ID:???
URLはそうなるけど実際にアクセスしたら
resourcesで定義したshow呼ばれない?
06246072009/07/10(金) 19:31:50ID:???
うまくいったぁぁぁあfsりゅいゆjjきl

以下のような感じでうまく行きました。下記は、
  /items/:item_id/sub_items/:id/hage
のようにアクセスさせたい場合です。hage は getでアクセスするものとしてます。
(config/routes.rb)
  # /items
  map.resources :items do |item|
    # /items/:items_id/sub_items
    item.resources :sub_items,
      # /items/:item_id/sub_items/:id/hage
      :member => {:hage => :get}
  end

(app/controllers/sub_items.rb)
  :
  # GET /sub_items/1/hage
  def hage
    respond_to do |format|
      format.html { redirect_to(item_sub_item_url) }
      format.xml  { head :ok }
    end
  end

(app/views/sub_items/index.html.erb)
  :
  <% @sub_items.each do |sub_item| %>
    :
    <td><%= button_to("ハゲる", hage_item_sub_item_path(@item, sub_item), :method => :get) %></td>
  :

わかっている人には当たり前のことだと思うのですが、今日という日は、みなさま本当にありがとうございました。
0625nobodyさん2009/07/10(金) 20:14:06ID:???
盛り上がっているところ?失礼します。

セッションについてお聞きしたいのです。
webアプリ自身あまり慣れていない者なのですが、

「Agile Web Development with Rails」(3版)では、
セッションに複雑なもの入れんな(とかいいつつ、チュートリアルではクラスのインスタンス入れてたりしますが)

とあったり、

「Railsレシピブック」では P83に

   なお、Rails 開発チームの見解としては、セッションに入れるデータは、
   ユーザーのID(整数)とflash メッセージ程度にとどめることが推奨されています。

などとあるのですが、この辺の開発チームの見解はweb上でどこかに記述がありませんでしょうか?
参考にしたいのですが…
0626nobodyさん2009/07/10(金) 21:15:16ID:???
>>625
restful = state less = セッションにデータいれんな
0627nobodyさん2009/07/10(金) 21:18:35ID:???
sessionはcookieを使っているのですか
0628nobodyさん2009/07/10(金) 21:20:41ID:???
デフォルトはそう
DBにもできるが個人的にはクッキーが好き
0629nobodyさん2009/07/10(金) 23:54:40ID:???
http://dev.rubyonrails.org/browser/trunk/actionpack/CHANGELOG?rev=6184
当時のchangelogのこれかな。

Sessions typically contain at most a user_id and flash message;
both fit within the 4K cookie size limit. <snip>
If you have more than 4K of session data or don't want your data to
be visible to the user, pick another session store.
Cookie-based sessions are dramatically faster than the alternatives.

セッションにはせいぜいUIDとflashくらいしか入っていないのが典型。
これはクッキーの4K制限に収まる。
4K以上入れたいなら他のストアを使おう。
クッキー使うと他より断然速いよ。
06306052009/07/11(土) 00:14:10ID:???
>>606
ありがとうございます

いつも疑問に思うのですが、コントローラーのメソッドAから
コントローラーのメソッドBが呼ばれることは少ないけど、
一方、モデルのメソッドCからモデルのメソッドDが呼ばれる
ことは多々あると思うんです。

それじゃあ、もしCがトランザクションを開始したかったら、
あらかじめDがトランザクションを開始していないことを
ソース追いかけて確認しないとダメなのでしょうか?

それに、Dだってさらに別のメソッドを呼んでいるかも…

C++でいう nothrow みたいに宣言できないのでしょうか?
notransaction とか?
0631nobodyさん2009/07/11(土) 00:26:45ID:???
入門書って何がいいかな?

・Ruby自体は習得済み
・インストールの方法をつらつらとコマンド並べて解説したりするのはいらない
・Webアプリの経験は無い
・HTMLは分かる
・1系を使う予定は無い

日本語じゃThe Ruby Wayがいいと思ったけどSimply Railsって良いのかな?
あんまし英語難しいのは勘弁だが洋書が良いなら有りかなとも思ってきた。
Agile Web Development with Railsとかもどうなんだろ?
0632nobodyさん2009/07/11(土) 00:35:57ID:???
>>631
http://guides.rubyonrails.org/
は駄目かしら。
0633nobodyさん2009/07/11(土) 09:06:59ID:rxtHjZBV
rorに適したosってなあに?
windows osよりlinuxの方が不都合が少ないとかなんとか
0634nobodyさん2009/07/11(土) 09:41:45ID:9PZL7n+0
Chrome OS
0635nobodyさん2009/07/11(土) 09:42:08ID:???
Windowsはrubyやwebアプリ自体に不向き
0636nobodyさん2009/07/11(土) 10:22:08ID:???
教祖が使ってるのはデビアンだっけか。
ror作者はマカだったかな?
運用は要求レベル次第。動けば良いなら好きなのでおk。
0637nobodyさん2009/07/11(土) 10:58:16ID:???
ようするにUNIXやその系統。
0638nobodyさん2009/07/11(土) 12:33:28ID:???
>>633
無難にUbuntuでいいんじゃないの?
インストール簡単だし、デスクトップも一番洗練されてる。

sudo apt-get install ruby1.8 rubygems1.8
sudo gem install rails

だけで開発環境できちゃうし。
WinやMacと比べても拍子抜けするほど簡単。
0639nobodyさん2009/07/11(土) 13:57:49ID:???
macはデフォでrailsはいってるけどな
0640nobodyさん2009/07/11(土) 15:46:08ID:???
Windows環境なのですが、

 ruby -Ku script/server

して文字コード指定しても立ち上がる mongrel 1.1.5のエラーメッセージがSJISになってしまうのですが、
これ何故なんでしょうか?

コマンドプロンプターには都合はよいと思うのですが、強制する理由(というか仕組み)がわからない…

UTF-8前提のIDEとかから立ち上げると、激しく化けたりして困る
0641nobodyさん2009/07/11(土) 15:47:42ID:???
>>633
Windows に vmwareでUbuntu入れるか、andLinuxかcoLinuxか、Portable Ubuntu入れるか
って、前も書いたようなキガス・・・
06426332009/07/11(土) 18:00:12ID:???
みなさまサンクス
vmwareでubuntuを使うようにします
0643nobodyさん2009/07/12(日) 22:19:47ID:???
Heroku使おうと登録してみて開通まで言ったけど。
オレが作ったアプリ軽く5Mオーバーだったw
無料じゃ仕えねぇ-w
■ このスレッドは過去ログ倉庫に格納されています