トップページ⇒php
986コメント359KB

【Ruby】Ruby on Rails Part8

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/09/13(日) 20:49:34ID:kz4rC4Dx
■前 Ruby on Rails Part7
http://pc11.2ch.net/test/read.cgi/php/1241100447/

■参考サイト
<英語>
本家: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 37
http://pc12.2ch.net/test/read.cgi/tech/1251029267/
Ruby 初心者スレッド Part 30
http://pc12.2ch.net/test/read.cgi/tech/1249687283/
0345nobodyさん2009/10/31(土) 15:39:28ID:???
回答有り難うございます。

map.resources :financial_statementes は上手くいきませんでした。

同じようなURL(/controllername)はマッピング出来ているのに/financial_statementsはエラーになる理由がよく分からないです。。
0346nobodyさん2009/10/31(土) 15:42:24ID:???
まー、あとは routes.rb の問題ぽいからドキュメントみつつ
rake routes しつつ、試行錯誤してくれい。
0347nobodyさん2009/10/31(土) 19:08:53ID:???
おまたせしました
質問です
RoRはWindows7で動作しますか?
0348nobodyさん2009/10/31(土) 20:26:19ID:???
動かないと思います
0349nobodyさん2009/11/05(木) 17:41:39ID:???
Ruby on Rails解説書の定番"Agile Web Development with Rails"の
日本語最新版『RailsによるアジャイルWebアプリケーション開発 第3版』が、
この2009年11月末にオーム社より発行されます。

ついにでるー.
0350nobodyさん2009/11/05(木) 21:57:32ID:???
>>350
�d
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?&ISBN=978-4-274-06785-3
0351nobodyさん2009/11/05(木) 23:41:40ID:???
Head first railsもRails2.3対応で同時期に出るらしいんだけど,
どっちがいいかな
0352nobodyさん2009/11/06(金) 01:47:30ID:???
以下のようなプログラムを作成し、実行しています。

strSQL="select count(*) as cnt ,fk_table_id from datas where del_flg=0 group by id order by count(*)"
hoge=Data.find_by_sql(strSQL)
--------
<table>
<%for i in (0..hoge.length-1) %>
<tr><td><%=hoge[i].fk_table_id%></td><td><%=hoge.cnt%></td></tr>
<%end %>
</table>
-----------------
ですが、ときどき
undefined method `fk_table_id`
というエラーがエラーログに出ています。
何か対処方法はないでしょうか?
sqlは一例で、日によって発生場所がまちまちになっています。

環境
os centos
ruby 1.8.7 p-174
rails 2.1.2
mysql tritonn-1.0.12-mysql-5.0.67

クエリキャッシュを有効にしていたのですが
エラーの出現回数があまりに多いので
毎回クリアさせてみたところ多少減りました。
0353nobodyさん2009/11/06(金) 01:47:47ID:???
そのタイミングでrails3が来たら全員涙目w
0354nobodyさん2009/11/06(金) 03:08:33ID:???
一度出たら2年くらい出ないから、3系を待ってくれた方がよかったかも
正直2.3系はあまり困ってない
0355nobodyさん2009/11/06(金) 17:55:44ID:???
質問させてください。

/lib/xxx.rbのモジュールをControllerでincludeして利用しています。
BackgrounDRb(/lib/workers/yyy_worker.rb)でも
xxx.rbのモジュールをincludeして利用したいのですがどうすればいいでしょうか?
0356nobodyさん2009/11/07(土) 00:52:56ID:ygEaPrn0
Rails勉強中なのですが、DBのリレーションのところでつまずいてます。
目的:下記条件下で、new.html.erbから名字と子供のnameを登録したい。

テーブル
Parent
id:
myoji:

Child
id:
parent_id:
name:

という二つのテーブルがあり
それぞれのモデルには、
has_one :child
belongs_to :parent
を指定しています。
0357nobodyさん2009/11/07(土) 00:54:17ID:ygEaPrn0
上の続きです。

コントローラーには、
main.rb
def new
@user = Parent.new
end
def create
@user = Parent.new(params[:data])
@user.save
end

Viewのnew.html.erbには
<% form_for :parent,@user,:url=>{:action=>'create',:id=>@user} do |form|%>
名字:<%= form.text_field :myoji %>
名前:<%= form.text_field :name %>
<%submit_tag '登録'%>
<%end%>
とします。
間違っているところを具体的ご指摘いただけないでしょうか。
rails rubyなどは最新バージョンです。

0358nobodyさん2009/11/07(土) 01:01:03ID:ygEaPrn0
すみません。
@user = Parent.new(params[:data])
ではなく、
@user = Parent.new(params[:user])
だと思うのですが、、、まちがってますよね。。。
0359nobodyさん2009/11/07(土) 02:01:48ID:???
>>355も>>356も、どう困ってるか書いてないのだが同じやつか?
0360nobodyさん2009/11/07(土) 02:36:17ID:???
自分でも何が分かってないのか分かってないんだろ。
なんかよく分からないけどヒントください、みたいな。
0361nobodyさん2009/11/07(土) 02:36:32ID:ygEaPrn0
いえ、違う人です。

いろいろ変えてやってみたのですがいろいろなエラーで
収集がつかなくなったので、根本的に、基本的なところで
どう間違っているのか、指摘してもらえればありがたいなーと
思いまして。。(^^;;
0362nobodyさん2009/11/07(土) 02:39:37ID:???
そのコントローラーに対してどういうアクセスをしたのか、
その結果どういうエラーが出たのか、
具体的に示さないとあかの他人がアドバイス出来るはずないでしょ。
0363nobodyさん2009/11/07(土) 08:13:45ID:???
何もしてないならコントローラの名前がmain.rbって時点で変。
0364nobodyさん2009/11/07(土) 08:40:04ID:???
ずーっと使っているとメモリの消費量がすごいことになるんだけど
どうしたらいいの?
いったん再起動するの?
0365nobodyさん2009/11/07(土) 09:14:59ID:iBTE7BNg
自分の場合、monitなどの監視ツールでメモリの使用量が一定量を超えたら自動で再起動させてる
0366nobodyさん2009/11/07(土) 09:15:41ID:???
freeしても使用メモリはOSが実際に必要とするまで返還されなかったり
するからとりあえずOSとかいろいろ教えれ。
0367nobodyさん2009/11/07(土) 09:22:59ID:???
>>364
放っておくと死ぬから頻繁に再起動するしかないw
0368nobodyさん2009/11/07(土) 09:53:27ID:iBTE7BNg
Passengerの場合は、5分間アクセスがなければプロセスを終了させるとか、1000回アクセスを処理したら終了などの設定ができるので、特にツールを使わなくても再起動できるのでおすすめ。
0369nobodyさん2009/11/07(土) 11:37:51ID:???
rubyってガベコレしてないの?
0370nobodyさん2009/11/07(土) 12:03:22ID:???
してるけど、Conservative GCなのでどうがんばっても回収漏れは発生する。
0371nobodyさん2009/11/07(土) 12:07:23ID:???
>>366
ubuntu 8.04をxp上のvmware playerで動かしてる
メモリの割り当ては512M

monitなどで再起動か
なるほろ
0372nobodyさん2009/11/07(土) 12:14:14ID:???
GCはOSからもらっているメモリで再利用していいはずの
箇所を実際に再利用できるようにすることなので、
OSにメモリを返すという意味ではない。

0373nobodyさん2009/11/07(土) 14:27:25ID:???
じゃあ再起動しなくていいはずなのに
どうして再起動しないと固まるんだろうw
0374nobodyさん2009/11/07(土) 15:00:41ID:???
GC以外のところに原因があるからという風に読めるな
0375nobodyさん2009/11/07(土) 16:06:55ID:???
railsお勧めのレン鯖って存在しますか?
0376nobodyさん2009/11/07(土) 16:36:34ID:???
メモリリークしまくるのはオブジェクト指向言語の伝統だし。
0377nobodyさん2009/11/07(土) 16:40:02ID:???
ちょいと質問があります。

modelに書く処理をmoduleにまとめておきたいのですが、うまく行きません。
module内にnamedscopeの定義をまとめて書いたのですが、

 undefined method `named_scope' for ModelSupport:Module

などといわれてしまいます。

現在は例として以下のような感じで記述しています(名前は例なのでつっこまないで)
item.rb(Itemモデル)に

class Item < ActiveRecord::Base
  include ModelSupport
end

lib/model_support.rbに、
module ModelSupport
  named_scope :new_post, lambda{|num| {:limit => num}}
end

うまく、module化するにはどのように書いたものでしょうか?
0378nobodyさん2009/11/07(土) 16:42:07ID:???
>>375
定評あるのはslicehostかな?
最近なら、Rackspaceとか
0379nobodyさん2009/11/07(土) 17:02:18ID:???
>>375
ちょっと試したいだけなら heroku の無料プラン。

>>377
その書き方の場合、named_scope は module ModelSupport のスコープで実行される。
実行されるというのはメソッドが呼ばれるという意味ね。
例)
module Hoge
puts "hoge"
end
#=> hoge

単なるモジュールな ModelSupport は named_scope を知らないので undefined method になる。
で、どうすればいいかというとリフレクションを使う。

module ModelSupport
def self.included(base)
base.class_eval do
named_scope :new_post, lambda{|num| {:limit => num}}
end
end
end

module が include されたときに included が呼ばれるので、
class_eval を使って base(=includeしたクラス)のコンテキストで name_scope を呼ぶ。
03803772009/11/07(土) 17:12:43ID:???
>>379
うほっ!できました、できました!

他のRailsプラグインとかもそういうような書き方しててナンダコレ?とか思ってました。
スコープ考慮しないといけないんですね。

これ、慣用句的な書き方みたいですね。

今までmoduleの中身はincludeした方のスコープで動くもんだと思ってたw そういうことだったのか
0381nobodyさん2009/11/07(土) 19:06:05ID:???
>>373
>>じゃあ再起動しなくていいはず
逆。OSには返してないわけだから、基本的にOSから見た
プロセスが食うメモリってのは増える一方。
0382nobodyさん2009/11/07(土) 19:46:08ID:???
freeしてもOSにメモリを返却するってわけじゃないんだよな。
プロセスのメモリサイズをいじるのはsbrkとかbrkだっけ?
0383nobodyさん2009/11/07(土) 20:08:11ID:???
>>379
自分には関係ないけど
なるほどーと思った
0384nobodyさん2009/11/07(土) 21:19:04ID:???
>>379
宣言的に見えるけど、実のところnamed_scopeもただの
メソッドだからな。
0385nobodyさん2009/11/08(日) 02:45:09ID:???
qmailで受信して、.qmailのパイプ経由で
script/runnerしてメール処理をしてるのだが、
一度受信したメールが何度も繰り返し送られてくる。

これって、こういうものなのかな?
それとも的確な処理をしてないから?
0386nobodyさん2009/11/08(日) 02:58:14ID:???
受信したら消せよ
0387nobodyさん2009/11/08(日) 03:13:16ID:???
うそん
0388nobodyさん2009/11/08(日) 03:16:34ID:???
外部から何度も送られてくるのよ。
受信したメールをコマンドで処理するのみで
保存しないようにしても症状は同じ。

受信したときに相手のサーバに的確なメッセージを
返してあげないとダメなのかな?
そういうのはqmailが勝手にやってくれてると思うのだけど…
0389nobodyさん2009/11/08(日) 10:25:46ID:???
>>388
> そういうのはqmailが勝手にやってくれてると思うのだけど…

おいおい
0390nobodyさん2009/11/08(日) 11:28:57ID:???
これがruby厨
0391nobodyさん2009/11/08(日) 14:55:17ID:???
そんなくれくれruby厨に助言してくれよう。
終了コード0返すだけじゃだめなの?
0392nobodyさん2009/11/08(日) 16:35:04ID:???
ActiveRecord::Migration.execute('CREATE TABLE hoge (・・・); CREATE INDEX ・・・;')
とかしてもインデックス作られないんだけどCREATE TABLEだけしか実行してくれないの?
0393nobodyさん2009/11/08(日) 18:22:12ID:???
そんな事はない。
インデックスも正しく作成される。
その前にマイグレーションを使っているのに、わざわざSQLを直接実行するのはなんでだ?
0394nobodyさん2009/11/09(月) 20:11:21ID:???
Railsではidを渡すところに大概は、Hoge.find(id) した後のオブジェクトを渡しても
自動でidに変換してよしなに計らってくれますよね?

例えば、Hoge.find自身もintegerなidじゃない Hoge.firstの返り値などでも通ります。
これを自分の処理でも使いたいのですが、該当するメソッドはないものでしょうか?

ActiveRecordのfindのソースとかたどって見ているのですが、
いまいちわからんとです・・・

環境はRuby 1.8.7、Rails 2.3.4です。
0395nobodyさん2009/11/09(月) 21:43:53ID:???
>>394
まずは active_record/base.rb の AR::Base#find から find_one / find_some などを経て
def quote_value(value, column = nil)
  self.class.connection.quote(value, column)
end

これは、active_record/connection_adapters/abstract/quoting.rb の
def quote(value, column = nil)
  # records are quoted as their primary key
  return value.quoted_id if value.respond_to?(:quoted_id)
:
かな。

で、AR::Base に戻って
def quoted_id #:nodoc:
  quote_value(id, column_for_attribute(self.class.primary_key))
end
0396nobodyさん2009/11/09(月) 21:58:57ID:???
んなもんソース見るまでもなくね?
0397nobodyさん2009/11/09(月) 23:09:34ID:???
見ないでどうやってしらべんの
0398nobodyさん2009/11/10(火) 04:32:44ID:???
んなもん調べるまでもなくね
0399nobodyさん2009/11/10(火) 12:23:52ID:???
初心者スレか本スレに帰れ
0400nobodyさん2009/11/10(火) 15:45:57ID:???
>>395
無事動作を確認できました!

 Item.quote_value(1234) => "1234"
 Item..quote_value(Item.first) => "1"

みたいにいけますた。何故か文字列ですがw

find_oneやfind_someになんであるのに、見つけられなかったんだろ、と
ドキュメントを思ってよく見たら
railsのchmファイルって、メソッドのソース表示は長い行だと折り返されないで、
画面外にでてって表示されないっぽいですね orz

他の場面でもソース見ててハマりそうだ・・・。
この辺てCSSとか直したらなんとかなるんかな。
0401nobodyさん2009/11/10(火) 16:15:53ID:???
「SQL文の条件句に埋め込む数値の表現」なので、
最終的に文字列が得られるようになってるのよ。
0402nobodyさん2009/11/10(火) 16:23:20ID:???
>>401
ああ、確かにドキュメントに

> Quote strings appropriately for SQL statements

と書いてありますね。

quote_〜〜ってメソッドたくさんあるし、なんのことかと思ったら、
SQLのためのクォート処理なんですね。
勉強になりました。

privateメソッドですし、期待する機能と名前が一致しない点もアレなのですが、
とりあえずは実現できるので ActiveRecord::Base::quote_value を使ってみます。
帰り値の文字列はto_iすればいいですし。

ありがとうございました。
0403nobodyさん2009/11/10(火) 20:20:41ID:???
質問よいですか?

URLに&hoge=true
といったように、フラグや状態(日付とかでもいいです)を記載して、
しばらく、一定のページ遷移まで、&hoge=trueのGETパラメータを付加しつづけるよい方法はありませんでしょうか?

クッキーがいいかと思ったのですが、状態の違うページをいくつか開いた際に破綻してしまいます。

今は、form_forなどの引数にパラーメータを一個一個渡しています。
手動なのでけっこうミスがでてしまいます。
以下のような感じです。

view側:
<% form_tag({:action => :edit, :id => @item}.merge(hoge_params_hash)) do %>
:
<% end %>

コントローラー側:
helper_method hoge_params_hash
private
def hoge_params_hash
  params[:hoge] ? {:hoge=> params[:hoge]} : {}
end

例として、ブログやCMSのプレビュー用のモードというか、プレビューボタンを押した後指定のページ遷移までは
フラグ立てたまま処理する(「プレビュー中です」のような表示をしたい)というような場合や

食べた食品を記録するサイトで、ある日に記録するデータを検索窓から検索した場合、
その検索後のページ場合もそのある日を覚えておいて、記録時に使いたいといった場合です。

設計の問題なのかもしれませんが、ぜひご助言ください。
0404nobodyさん2009/11/10(火) 22:01:55ID:???
formならhiddenでいいんじゃね?
0405nobodyさん2009/11/10(火) 22:09:57ID:???
セッションに保存するのが駄目な理由が分からん。
application_controllerにチェックするメソッド定義して、各コントローラでfilterで呼ぶとか。
filterを工夫すればいいんじゃないの?
0406nobodyさん2009/11/10(火) 22:11:23ID:???
>>403

例えば、link_toの場合は、こんな感じで書くとGETパラメータを付加してくれる。
formでも同じ事ができるかは分からないが。
<%= link_to("編集", :action => :edit, :id => @item, :params => params) %>
04074032009/11/11(水) 09:59:21ID:???
>>405
そういうことが聞きたいのです。

セッションだと、
>>403の下のブログやCMSの例でいえば、プレビューと実際の画面表示のコードを共有していた場合、
プレビュー中に、実際の画面みようとしてもプレビュー表示になってしまいますよね。

食品の記録サイトでいえば、別のタブで同時に別の日を入力しようとしていた場合、
セッションにある値しかつかわれないので、セッションにある日しか同時に入力できないことになります

つまり、セッションだと状態を1つしかもてない、という意味なのですが・・・

ま、仕様です、と言えば、それでもいいのかもしれませんがw

>>406
あ、いえ、今もそんな感じでやってるんです。

>>403のコード例がわかりにくいのですが、
form_tag でGETパラメータを指定しています。
ただし、指定するかは今のページのGETパラーメータを見てから。

>>404
確かにformならhiddenでもいいですね。GETパラメータでやらなくてもいいか
0408nobodyさん2009/11/12(木) 03:49:23ID:K53v7ACD
ファイルをアップロードするときってform_tagとかfile_fieldを
つかってファイルを選ぶ方法しかないのでしょうか?
クライアントがパスを書いてそこにあるファイルをサーバに保存する
ことは不可能ですか?
0409nobodyさん2009/11/12(木) 04:51:31ID:???
可能
0410nobodyさん2009/11/12(木) 15:35:06ID:???
/etc/passwdとか上書き出来たら楽しいね。
0411nobodyさん2009/11/12(木) 15:36:59ID:???
当たり前のような質問があります。

HogeControllerがあり、publicなメソッドとしてFoobarを新たに追加しました。
デフォルトのルーティングだと、
 /hoge/foobar
でアクセスできるのですが、プログラム上からは
 foobar_hoge_path()
が使えません。

rake routesしても載ってないのですが、
これって、routes.rbに

 map.resources :hoge, :member => { :foobar => :get }

などとかかなくてはいけないものなのでしょうか?
0412nobodyさん2009/11/12(木) 22:47:21ID:???
find_by_sqlで複数のSQLを実行したとき
返ってきた結果セットがほぼ同時に別プロセスで
実行していた別なSQLのものに変わってしまっています。
mysqlの設定などでチェックすべきところとかないでしょうか?
0413nobodyさん2009/11/12(木) 23:21:24ID:???
>>411
無指定の map.resources だけだとそこまで面倒みてくれない。
map.resources に追加するか、昔ながらのやり方で

map.foobar_hoge 'hoge/foobar', :controller => 'hoge', :action => 'foobar'

のように定義してやるとか。
0414nobodyさん2009/11/12(木) 23:37:15ID:???
トランザクションとかストアドプロシージャだろうか
やったことないけど
04154112009/11/14(土) 04:27:35ID:???
>>413
ありがとうございます。
こちらでも試してみましたが、やはり、必要なのですね。

>>411のは間違ってまして、/hoge/foobarの場合は、
 map.resources :hoge, :collection => { :foobar => :get }
でした。
/hoge/1/foobarなら、>>411のでいいみたいです。
0416nobodyさん2009/11/17(火) 14:03:16ID:???
ちょっと聞いていいでしょうか?
psousa's baseapp-orange at master - GitHub
http://github.com/psousa/baseapp-orange

以前でてたBaseAppというRailsのテンプレみたいなのの派生verがあるのを発見して
動かしてみようと思ったんですが、うまく行きません。

READMEにあるように、mysql用のdb設定をdatabase.ymlにして、
rake db:migrate
したのですが、

 Missing these required gems:
  capistrano-ext

と言われてしまいます。
vendor以下を見るとfreezeされているのか、必要なgemなど全部入っているようなのですが、このように言われます。

config/enviroment.rb には、
 config.gem "capistrano-ext", :lib => "capistrano"
のような記述があり、
 rake gems:install
とするのですが、何ごともなく終了します。

どうしたものでしょうか?
04174162009/11/17(火) 14:16:18ID:???
>>416 ですが、
ないならgemいれればいいんじゃね?という当たり前の結論で、
 gem install capistrano-ext
したら、無事に通りました。(db:migrateでDBないと言われたので、rake db:createしましたら行けました)

しかし、何でこんな動作になっているのだろう?

なるべくシステムに入っているgemを使いたいのですが、満載のvendor/gems以下や、vendor/rails以下は
手動で削除しちゃっていいものなのでしょうか?
0418nobodyさん2009/11/17(火) 16:12:30ID:???
rails 2対応の初心者用参考書でお勧めはどれですか?
0419nobodyさん2009/11/17(火) 16:13:42ID:???
既存のapache管理下のものに影響与えないように導入することはできないのでしょうか
0420nobodyさん2009/11/17(火) 18:37:57ID:???
>>418
>>350がいいんじゃないかと思う
0421nobodyさん2009/11/17(火) 22:36:49ID:???
>>419
影響ってどういう意味?
0422nobodyさん2009/11/18(水) 02:13:20ID:???
restful_authenticationを使ってログイン認証を行おうと思ってるんですが、
画面の遷移がない場合5分経ったらセッションを消してログアウト状態にしたいと思っています。

以前はacts_as_authenticatedを使って、ログインされたらデータベースのsessionテーブルにユーザーの
session情報を保存しておいて、ユーザーが画面遷移をしたら、そのsession情報を更新しておき
5分おきにsessionテーブルを監視して、更新時間が5分以上経ってたらsessionテーブルから削除するようにして
ログアウト状態を再現していました。

restful_authenticationを使う場合は、データベースに値を持たなくても上記のような事ができるのでしょうか?
すみませんが、お知恵をお貸しください。宜しくお願いします。
0423nobodyさん2009/11/18(水) 17:36:25ID:8qlvL/3i
都道府県のデータをRubyの配列で用意しようと思うんだけど、
どこのファイルにおくのがおすすめでしょうか。

JP_STATES = [
'北海道',
'青森’,
...
]

こんな感じのデータです。
0424nobodyさん2009/11/18(水) 18:51:10ID:???
Railsアプリのルートディレクトリを表す変数とかありませんか?
0425nobodyさん2009/11/18(水) 22:12:48ID:???
>>422
restful_authentication自身にはそういった機能はなかったはず。
データベース側をきっちり削除したいなら自前で実装するのがいいだろうね。
クッキーのexpireでいいなら、2.3以降ならActionController::Base.sessionの:expire_afterを指定、
それ以前ならdynamic_session_expプラグインを使えばいい。

>>423
2.0以降なら config/initializers以下に。
それ以前ならconfig/environment.rbやconfig/environment/*.rbに直書きするか
config/以下にファイルを置いてenvironment.rbなどからrequire。

>>424
RAILS_ROOT
0426nobodyさん2009/11/18(水) 22:14:23ID:???
いまは Rails.root でもOK
0427nobodyさん2009/11/19(木) 00:14:02ID:???
Wikiみたいなアプリで、文字列をHTMLに変換する処理をParserとしてモデルに切り分けたいのですが
url_forとかhoge_urlとかはモデルから使えないので、リンク生成をどうしたものかと思っています。
config/routes.rbの設定と重複しないために、できればURL生成メソッドで作りたいのですが
どうにかできないでしょうか?
0428nobodyさん2009/11/19(木) 15:24:41ID:???
>>427
モデルじゃなくて(モデルでもいいけど)、
ふつうのライブラリみたいに lib/以下にParserとしておいて、
コンストラクタでコントローラーのインスタンスを渡す、とかどうだろか

lib/以下に置く時の注意は、moduleにしてRailsが想定する名前の付けか足しておくと、
requireとかしなくても、自動で読んでくれる。はず。
詳しい方きぼん
0429nobodyさん2009/11/19(木) 15:32:45ID:???
ついでに質問なのですが、FormBuilderやFormHelperを継承せずに拡張したいのですが、うまいやり方ないでしょうか?

今は、
lib/hoge_form_helper.rb として、

module HogeFormHelper
  module FormBuilder
    def my_text_area(method, options = {})
       :
    end
  end
end

上記のように書いて、application_helper.rbにて、

class ActionView::Helpers::FormBuilder
  include HogeFormHelper::FormBuilder
end

のようにして、組み込んでいます。
FormBuilderを書いたら、FormHelperも追加したくなるのが人情というものですが、その場合、
HogeFormHelper::FormHelper を書いて、application_helper.rbに、

class ActionView::Helpers::FormBuilder
  include HogeFormHelper::FormBuilder
  include HogeFormHelper::FormHelper
end
のようにさらにするのが不恰好に見えます。
これらの処理をlib/hoge_form_helper.rb側におけないものでしょうか?
0430nobodyさん2009/11/19(木) 20:01:14ID:???
rspecでhave_textとかinclude_textが動かなくて困っています。

現象:
get "some_action_name"
response.should include_text("foo")
とすると
expected "foo", got "1"
と表示され、失敗します。
response.should render_template(...) は成功しています。

調べたこと:
自分で調べたところ、p response.body をすると "1" が出力されました。
これはテンプレートがレンダリングされてないのだと思い、テンプレートの中で
$stderr.puts "**** rendered *****"
みたいに入れると、出力されませんでした。

推測:
どうもgetを呼び出しただけだとテンプレートがレンダリングされない?
rspecのチュートリアルだと
ttp://rspec.info/rails/writing/controllers.html
get 'some_action'
response.should have_text("expected text")
とあるので、getだけでいいと思うんですけど、ほかに何か必要でしょうか。
0431nobodyさん2009/11/19(木) 21:37:22ID:???
>>429
プラグイン化するとか。
結局はincludeするんだけど、vendor/plugins に丸ごと置くだけでよくはなる。
0432nobodyさん2009/11/20(金) 16:48:45ID:???
Railsで、text2html みたいなヘルパーってありませんでしたっけ?
「rails text2html」でぐぐっても、それらしいのは見つからず。
0433nobodyさん2009/11/20(金) 17:56:43ID:???
RoRをWindows上で稼動させていてアップローダーを作ったところ
日本語のファイルがUTF-8で生成されてWindows上で文字化けします
ファイルを保存するときにSJISに変換しないといけないのでしょうか?
NTFS自体はUNICODE対応のはずだし
なにかが間違ってるような気がするんです
0434nobodyさん2009/11/20(金) 18:02:42ID:???
>432
textile とか markdown のこと?

>433
お前が間違ってる
0435nobodyさん2009/11/20(金) 18:55:59ID:???
form_remote_tagとselect_tagを使ってAjaxで選択リストの値を送りたいのですが、値を受け取るにはコントローラでどのようなコードを書けばよいのでしょうか?
0436nobodyさん2009/11/20(金) 19:17:38ID:???
>>433
UTF-8で保存するのでもなければSJISで保存するのでもない
UNICODEで保存するんだぞ
0437nobodyさん2009/11/22(日) 03:24:06ID:???
parentテーブルとchildテーブルがあるとして、
parentモデルにhas_many :childを指定してchlidテーブルに
belogns_to :parentと指定します。
この状態の時に「parent.child.replace = @child」でchildに値をセットして
parent.saveとすると新規登録はされるんですが、更新が上手く行きません。
何か書き方がいけないのでしょうか?それとも仕様でしょうか?
ruby 1.8.6でrailsは2.2.2です。
よろしくおねがいします。
0438nobodyさん2009/11/22(日) 04:51:41ID:Z6X1KQFW
>>436
UNICODEで保存?
UTF-8/16じゃなく?
0439nobodyさん2009/11/22(日) 06:54:00ID:???
write open するときに
OpenFileA()じゃなくて
OpenFileW()使えっていう意味では
0440nobodyさん2009/11/23(月) 20:58:50ID:???
RailsでjQuery使うにはどうするのがよいんでしょうか?
jRailsというのがあったみたいですが、公式サイトなくなってるし・・・

jRails - jQuery on Rails
 http://ennerchi.com/projects/jrails
0441nobodyさん2009/11/23(月) 21:27:37ID:???
ふつうに <script src=></script> でいいんじゃないの?

0442nobodyさん2009/11/24(火) 00:15:15ID:???
当方Windowsで開発をしています
ruby script/serverを実行した際に

C:\rails\hello>ruby script/server
=> Booting Mongrel
=> Rails 2.3.4 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server

でコマンドプロンプトが次のWEBRICKが起動した〜などを出力してくれません
Ctrl-Cをしてもサーバーは停止できません
一度だけこの状態で長時間放置したときに
500 Internal Server Error
unknown error
という表示がされました

解決方法がさっぱりわかりません
どなたか解決方法知っている方がいれば教えていただけるとありがたいです
0443nobodyさん2009/11/24(火) 00:38:56ID:???
こっち最新なんだろうか
http://github.com/aaronchi/jrails
0444nobodyさん2009/11/24(火) 03:53:25ID:igGLII2V
>>442
まるち
0445nobodyさん2009/11/24(火) 07:33:31ID:???
>>442
誘導されておきながらそれを書かないからマルチ扱いされる
あと誘導前のスレにも移動する事くらい書いた方がいい
ちなみにMongrelの事は知らないので質問には答えられない
■ このスレッドは過去ログ倉庫に格納されています