【Ruby】Ruby on Rails Part8
at PHP
[前50を表示]
300:nobodyさん
09/10/23 00:46:33
英語読んだだけで覚えないだろ?使えないし、しゃべれないし
どんどん使って行かなきゃ名
301:nobodyさん
09/10/23 00:51:03
>>297
ちょうどいいサイトがある。
Ruby のサンプルプログラム投稿サイト - Masaru
URLリンク(projects.netlab.jp)
ここにどんどん投稿しろ、いやしてください。(m´・ω・`)m
302:nobodyさん
09/10/23 09:29:47
人気のあるサンプルプログラム
1. String#* /
同じ文字列を複数並べて表示する。 47pt | 2008-08-23
(;^ω^)
303:nobodyさん
09/10/23 12:14:31
レベル低すぎてワラタ
304:nobodyさん
09/10/23 12:55:13
>>303
ばか、>>297用へのリンクだとなぜlogを読まん?
305:nobodyさん
09/10/23 17:53:28
フォームから取得した値をコントローラで受けとって、何もせず再度表示させたいと思い以下のコードを書きましたが、何も表示されません。
ビューのコード
<% form_tag :action => 'name' do -%>
<p>NAME
<%= text_field_tag "t_field" %><br/><br/>
<%= submit_tag "作成" %>
<% end -%>
<%= @name %></p>
コントローラのコード
def name
@name = params[:t_field]
redirect_to :action => 'list'
end
:action => 'list' のlistは、scaffoldで作成されるlistです。
テキストフィールドの値を受け取るコントローラのコードが間違っているのでしょうか、
それとも<%= @name %>としただけのビューのコードが間違っているのでしょうか?
どなたか教えて頂けないでしょうか。よろしくお願いします。
306:nobodyさん
09/10/23 18:12:39
ruby script/server -u
でデバックモードで起動してくれるからログ見ろ
307:nobodyさん
09/10/23 18:22:29
HTML間違ってる訳だが
308:nobodyさん
09/10/24 01:13:38
リダイレクトしたらフォームの値は消えるだろ。
GETでパラメータ渡すか、セッション使わない限り。
ビューといっているのが、list.html.erb(またはlist.rhtml)なのであれば、
render :action => :list
で動くだろう。
もし、違うファイル名(例えば、name.html.erbとか)だったらそれを指定する必要がある。
309:273
09/10/24 20:56:08
ただの愚痴とか情報弱者とかご指摘をいただきました>>273でございます。
Snow Leopardのクリーンインストールをしたところ、問題なく動く
ようになりましたので、ご報告させていただきます。
あちこちに書かれている通り、Mysqlの64ビット版をインストール、
mysql gemを-arch x86_64フラグ付きインストールでうまくいきました。
やっぱり、OSのアップグレードのような作業で手間を惜しむと後でよけいに苦労
することが多いのは世の常ですね。
310:nobodyさん
09/10/24 22:59:57
gem入れ直すだけで十分だったのに
311:nobodyさん
09/10/25 05:56:11
>>308
パラメータ消えるんですね。知らなかったです。
リダイレクトとレンダーの違いがよく分かってなかったです。
回答有難うございました。
312:nobodyさん
09/10/26 18:27:15
マカってホント情報弱者だなw
313:nobodyさん
09/10/27 17:37:01
既存DBがあって、それを利用してwebアプリをつくりたいのですが、
テーブル命名規則がRubyonRailsに完全に沿ってない。(idがauto_incrementとかは沿っている)
テーブル自体の命名規則はmodelsにset_table_nameで入れればエイリアスだと
認識してくれるので問題ないわけですが、
問題はカラムorz
リレーションを張ってあるカラム名が適当なため、
カラム名にエイリアスを乗っけたいのですが方法はありますかね?
hogeテーブル fugaテーブル
------------- ----------------
id id
title h_id ←これが「hoge_id」であってほしかった
created_at contents
updated_at created_at
updated_at
既存TBLが「h_id」で、railsの命名規則だと「hoge_id」でなきゃいけないのだけれどもカラム名の変更はできないという…
できそうなんだけどググっても不明ですどなたか教えて頂けませんか
314:nobodyさん
09/10/27 18:34:14
こういうのならば
belongs_to :folder , :foreign_key => "h_id"
ここの真ん中らへんにあります
URLリンク(api.rubyonrails.org)
Specify the foreign key used for the associationで検索してください
315:nobodyさん
09/10/27 18:34:38
:foreign_key
316:313
09/10/27 19:15:30
>>314
>>315
おおおうああできました!
ありがとうございます。
そうか、foreign_key でカラムに固有名をつけてあげればいい、ということなんですね。
すっかり凝り固まっていて思い至りませんでした。ありがとうございました!
317:313
09/10/27 19:21:50
あああちがう、foreign_keyで外部キー名を指定してあげる、ですね
理解が浅くて申し訳ないです
318:nobodyさん
09/10/28 14:26:55 /NsMtcRB
>>317
そのDBを、新しく作るrailsアプリからしか使わないんだったらマイグレーションでDBの定義変えちゃった方がいいと思うけれど。
foreign_key使うより個人的にはそっちの方がrailsのやり方に沿ってて好き。というかカラムの名前がrailsの命名規則に従ってないのって気持ち悪くない?まぁ人それぞれだと思うけど。
319:nobodyさん
09/10/28 16:11:34
そんなこと出来る環境なら誰だってそうするだろ。
既存DB弄れないのはよくあること。
320:318
09/10/28 17:48:49 /NsMtcRB
>>そんなこと出来る環境なら誰だってそうするだろ。
>>既存DB弄れないのはよくあること。
まぁだからもちろん、「そのDBを、新しく作るrailsアプリからしか使わないんだったら」なのだけれど。
313が業務じゃなくて個人的に色々作ってる人のような気がしたので、
だったらDBの定義変更もできるんじゃないかなと思って。なんとなく。
321:nobodyさん
09/10/28 17:57:57
質問よろしいでしょうか?
うまくいきません、どうやったらよいものでしょうか?
322:nobodyさん
09/10/28 17:59:40
よいよい詳しく申してみなさい
323:nobodyさん
09/10/28 18:00:59
すいません、質問の中身書き忘れました・・・
form_forとsubmitで、同じフォームのデータに「送信」ボタンと「送信とプレビュー」ボタンの2つをつけたいと思っています。
「送信」ボタンでは、/hage に送信し、
「送信とプレビュー」では /hage/preview に送信し別窓で開きたいと考えています。
どのように実現するのが早いでしょうか?
JavaScriptを絡めないと無理なものでしょうか?
324:nobodyさん
09/10/28 19:55:21
>>323
submitを一つのformに複数置く場合、アプリではsubmitを名前で
区別して動作を変えることができる。
結果表示の方だが、確か、formにも target="_blank" を指定できたと
思う。ただし、今回は、一つのformの複数のsubmitという条件なので、
片方のときだけ、実際にサーバにデータを送る寸前にtargetをすり替える
ようなJavaScriptを用意する必要があると思う。
325:nobodyさん
09/10/29 09:41:06
>>324
サンクス
そっか、submitの名前で区別して別の処理すればいいか
target="_blank"相当のボタン押下時の埋め込みですが、JavaScript試してみます。
というか、ちょっと試してみて、上手く言ってないので、JavaScript関連スレでお聞きしたいと思います。
ありがとうございました
326:313
09/10/29 11:06:29
>>318
>>319
提案とお気遣いありがとうございます。
使用しているDBは別のフレームワークで利用しているもので、
それにRailsで拡張アプリみたいにしてみたかったのでカラムの変更なしが前提でした。
でも本来ならばRails方式に変更した方がいいし、別フレームワークでもRailsと同じ方式でカラム命名ができるので、
Rails側アプリが巨大化する前に手をうとうと思います。
Railsの生産性の高さに元アプリから作り直しそうな勢いですw
327:nobodyさん
09/10/30 02:39:16
3.0って1.9.2が出たあとか?来年の4月に洋書で本が出るようだが
2系で作って大幅改修が嫌だから待ってるのだが遅すぎるわ
328:nobodyさん
09/10/30 02:43:45
>>327
洋書はどこから出るの?
329:nobodyさん
09/10/30 07:45:24
>>328
これのつもりだったが
URLリンク(www.amazon.co.jp)
これはもうすぐ出るんだな
URLリンク(www.amazon.co.jp)
よく見たら上のはドイツ語だった・・・
330:nobodyさん
09/10/30 08:21:29
ぶっちゃけその3はRails3じゃなくて、本自身の第3版じゃないか?
331:nobodyさん
09/10/30 08:22:43
失礼、英語の本のほうはRails 3か。
332:nobodyさん
09/10/30 12:38:37
ActeveRecordでupdate_atだけ更新する方法を教えてください
333:nobodyさん
09/10/30 22:40:57
>>332
railsのバージョンによって回答数が異なります。
バージョンは何?
334:nobodyさん
09/10/31 06:45:29
>>333
2.3.2です
335:nobodyさん
09/10/31 10:44:38
Railsのプロジェクトをチェックアウトして更新したのですが、追加したページにアクセス出来ません。
The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved.
というページが表示されます。Apacheを再起動してみましたが、表示されないままでした。
以前からあったページにはアクセスできますし、Mongrelを立ち上げてローカルからはアクセス出来ます。
production.logを確認してみましたが、何も書かれていませんでした。
環境はFedora10 + Apahe + passengerです。
どなたか解決方法を教えて頂けないでしょうか。 よろしくお願いします。
336:nobodyさん
09/10/31 11:17:28
>>335
そのエラーてどこのレベルでててるんだろ。
真ん中に赤枠があって、その中にエラー文字列があるなら、Railsがエラーはいているだろうけど
apacheのログ確認してみた?
337:nobodyさん
09/10/31 11:49:10
"GET/financial_statenents HTTP/1.1" 404
ログの見方はよく分からないのですが、Railsで用意された404が表示されているみたいです。
338:nobodyさん
09/10/31 12:10:24
追加したってのは、Rails.root 直下の public の下にHTMLファイルを
追加したってこと? Railsの機能を追加したってこと?
339:nobodyさん
09/10/31 12:47:05
新しいコントローラのクラスと、それに対応するビュー、モデル、データベーステーブルを追加しました。
340:nobodyさん
09/10/31 12:59:55
とりあえず、apacheではなくRailsプログラムの問題のようなので、
developmentモードで動かしてみる
→Passengerの設定にRailsEnvというのがある。
または、
productionモードのまま、ログレベルを:debugに変更
→config/environments/production.rbを弄る。
などでより詳しい情報を得ることを勧める。
341:nobodyさん
09/10/31 13:34:57
何度も申し訳ないのですが、Passengerの設定ファイルってどこにあるのでしょうか?
342:nobodyさん
09/10/31 14:46:41
PassengerでRailsEnv指定できました。
Routing Error
no route found to match "/financial_statements" with{:method=>:get}
という表示に変わりました。routes.rbに何か設定を追加すればよいのでしょうか?
343:nobodyさん
09/10/31 14:50:58
いいかげんにしろ
344:nobodyさん
09/10/31 15:00:09
/financial_satementesというURLでRailsになんらかのアクションを
してほしいなら、あなたが追加したコントローラとそいつのメソッド
がそのURLにマッピングされなければならない。
rake routes してみるとおそらく /financial_statements に反応する
ルールがないはず。
routes.rbに
map.resources :financial_statements とでも書けばいいんじゃない?
345:nobodyさん
09/10/31 15:39:28
回答有り難うございます。
map.resources :financial_statementes は上手くいきませんでした。
同じようなURL(/controllername)はマッピング出来ているのに/financial_statementsはエラーになる理由がよく分からないです。。
346:nobodyさん
09/10/31 15:42:24
まー、あとは routes.rb の問題ぽいからドキュメントみつつ
rake routes しつつ、試行錯誤してくれい。
347:nobodyさん
09/10/31 19:08:53
おまたせしました
質問です
RoRはWindows7で動作しますか?
348:nobodyさん
09/10/31 20:26:19
動かないと思います
349:nobodyさん
09/11/05 17:41:39
Ruby on Rails解説書の定番"Agile Web Development with Rails"の
日本語最新版『RailsによるアジャイルWebアプリケーション開発 第3版』が、
この2009年11月末にオーム社より発行されます。
ついにでるー.
350:nobodyさん
09/11/05 21:57:32
>>350
d
URLリンク(ssl.ohmsha.co.jp)
351:nobodyさん
09/11/05 23:41:40
Head first railsもRails2.3対応で同時期に出るらしいんだけど,
どっちがいいかな
352:nobodyさん
09/11/06 01:47:30
以下のようなプログラムを作成し、実行しています。
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
クエリキャッシュを有効にしていたのですが
エラーの出現回数があまりに多いので
毎回クリアさせてみたところ多少減りました。
353:nobodyさん
09/11/06 01:47:47
そのタイミングでrails3が来たら全員涙目w
354:nobodyさん
09/11/06 03:08:33
一度出たら2年くらい出ないから、3系を待ってくれた方がよかったかも
正直2.3系はあまり困ってない
355:nobodyさん
09/11/06 17:55:44
質問させてください。
/lib/xxx.rbのモジュールをControllerでincludeして利用しています。
BackgrounDRb(/lib/workers/yyy_worker.rb)でも
xxx.rbのモジュールをincludeして利用したいのですがどうすればいいでしょうか?
356:nobodyさん
09/11/07 00:52:56 ygEaPrn0
Rails勉強中なのですが、DBのリレーションのところでつまずいてます。
目的:下記条件下で、new.html.erbから名字と子供のnameを登録したい。
テーブル
Parent
id:
myoji:
Child
id:
parent_id:
name:
という二つのテーブルがあり
それぞれのモデルには、
has_one :child
belongs_to :parent
を指定しています。
357:nobodyさん
09/11/07 00:54:17 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などは最新バージョンです。
358:nobodyさん
09/11/07 01:01:03 ygEaPrn0
すみません。
@user = Parent.new(params[:data])
ではなく、
@user = Parent.new(params[:user])
だと思うのですが、、、まちがってますよね。。。
359:nobodyさん
09/11/07 02:01:48
>>355も>>356も、どう困ってるか書いてないのだが同じやつか?
360:nobodyさん
09/11/07 02:36:17
自分でも何が分かってないのか分かってないんだろ。
なんかよく分からないけどヒントください、みたいな。
361:nobodyさん
09/11/07 02:36:32 ygEaPrn0
いえ、違う人です。
いろいろ変えてやってみたのですがいろいろなエラーで
収集がつかなくなったので、根本的に、基本的なところで
どう間違っているのか、指摘してもらえればありがたいなーと
思いまして。。(^^;;
362:nobodyさん
09/11/07 02:39:37
そのコントローラーに対してどういうアクセスをしたのか、
その結果どういうエラーが出たのか、
具体的に示さないとあかの他人がアドバイス出来るはずないでしょ。
363:nobodyさん
09/11/07 08:13:45
何もしてないならコントローラの名前がmain.rbって時点で変。
364:nobodyさん
09/11/07 08:40:04
ずーっと使っているとメモリの消費量がすごいことになるんだけど
どうしたらいいの?
いったん再起動するの?
365:nobodyさん
09/11/07 09:14:59 iBTE7BNg
自分の場合、monitなどの監視ツールでメモリの使用量が一定量を超えたら自動で再起動させてる
366:nobodyさん
09/11/07 09:15:41
freeしても使用メモリはOSが実際に必要とするまで返還されなかったり
するからとりあえずOSとかいろいろ教えれ。
367:nobodyさん
09/11/07 09:22:59
>>364
放っておくと死ぬから頻繁に再起動するしかないw
368:nobodyさん
09/11/07 09:53:27 iBTE7BNg
Passengerの場合は、5分間アクセスがなければプロセスを終了させるとか、1000回アクセスを処理したら終了などの設定ができるので、特にツールを使わなくても再起動できるのでおすすめ。
369:nobodyさん
09/11/07 11:37:51
rubyってガベコレしてないの?
370:nobodyさん
09/11/07 12:03:22
してるけど、Conservative GCなのでどうがんばっても回収漏れは発生する。
371:nobodyさん
09/11/07 12:07:23
>>366
ubuntu 8.04をxp上のvmware playerで動かしてる
メモリの割り当ては512M
monitなどで再起動か
なるほろ
372:nobodyさん
09/11/07 12:14:14
GCはOSからもらっているメモリで再利用していいはずの
箇所を実際に再利用できるようにすることなので、
OSにメモリを返すという意味ではない。
373:nobodyさん
09/11/07 14:27:25
じゃあ再起動しなくていいはずなのに
どうして再起動しないと固まるんだろうw
374:nobodyさん
09/11/07 15:00:41
GC以外のところに原因があるからという風に読めるな
375:nobodyさん
09/11/07 16:06:55
railsお勧めのレン鯖って存在しますか?
376:nobodyさん
09/11/07 16:36:34
メモリリークしまくるのはオブジェクト指向言語の伝統だし。
377:nobodyさん
09/11/07 16:40:02
ちょいと質問があります。
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化するにはどのように書いたものでしょうか?
378:nobodyさん
09/11/07 16:42:07
>>375
定評あるのはslicehostかな?
最近なら、Rackspaceとか
379:nobodyさん
09/11/07 17:02:18
>>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 を呼ぶ。
380:377
09/11/07 17:12:43
>>379
うほっ!できました、できました!
他のRailsプラグインとかもそういうような書き方しててナンダコレ?とか思ってました。
スコープ考慮しないといけないんですね。
これ、慣用句的な書き方みたいですね。
今までmoduleの中身はincludeした方のスコープで動くもんだと思ってたw そういうことだったのか
381:nobodyさん
09/11/07 19:06:05
>>373
>>じゃあ再起動しなくていいはず
逆。OSには返してないわけだから、基本的にOSから見た
プロセスが食うメモリってのは増える一方。
382:nobodyさん
09/11/07 19:46:08
freeしてもOSにメモリを返却するってわけじゃないんだよな。
プロセスのメモリサイズをいじるのはsbrkとかbrkだっけ?
383:nobodyさん
09/11/07 20:08:11
>>379
自分には関係ないけど
なるほどーと思った
384:nobodyさん
09/11/07 21:19:04
>>379
宣言的に見えるけど、実のところnamed_scopeもただの
メソッドだからな。
385:nobodyさん
09/11/08 02:45:09
qmailで受信して、.qmailのパイプ経由で
script/runnerしてメール処理をしてるのだが、
一度受信したメールが何度も繰り返し送られてくる。
これって、こういうものなのかな?
それとも的確な処理をしてないから?
386:nobodyさん
09/11/08 02:58:14
受信したら消せよ
387:nobodyさん
09/11/08 03:13:16
うそん
388:nobodyさん
09/11/08 03:16:34
外部から何度も送られてくるのよ。
受信したメールをコマンドで処理するのみで
保存しないようにしても症状は同じ。
受信したときに相手のサーバに的確なメッセージを
返してあげないとダメなのかな?
そういうのはqmailが勝手にやってくれてると思うのだけど…
389:nobodyさん
09/11/08 10:25:46
>>388
> そういうのはqmailが勝手にやってくれてると思うのだけど…
おいおい
390:nobodyさん
09/11/08 11:28:57
これがruby厨
391:nobodyさん
09/11/08 14:55:17
そんなくれくれruby厨に助言してくれよう。
終了コード0返すだけじゃだめなの?
392:nobodyさん
09/11/08 16:35:04
ActiveRecord::Migration.execute('CREATE TABLE hoge (・・・); CREATE INDEX ・・・;')
とかしてもインデックス作られないんだけどCREATE TABLEだけしか実行してくれないの?
393:nobodyさん
09/11/08 18:22:12
そんな事はない。
インデックスも正しく作成される。
その前にマイグレーションを使っているのに、わざわざSQLを直接実行するのはなんでだ?
394:nobodyさん
09/11/09 20:11:21
Railsではidを渡すところに大概は、Hoge.find(id) した後のオブジェクトを渡しても
自動でidに変換してよしなに計らってくれますよね?
例えば、Hoge.find自身もintegerなidじゃない Hoge.firstの返り値などでも通ります。
これを自分の処理でも使いたいのですが、該当するメソッドはないものでしょうか?
ActiveRecordのfindのソースとかたどって見ているのですが、
いまいちわからんとです・・・
環境はRuby 1.8.7、Rails 2.3.4です。
395:nobodyさん
09/11/09 21:43:53
>>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
396:nobodyさん
09/11/09 21:58:57
んなもんソース見るまでもなくね?
397:nobodyさん
09/11/09 23:09:34
見ないでどうやってしらべんの
398:nobodyさん
09/11/10 04:32:44
んなもん調べるまでもなくね
399:nobodyさん
09/11/10 12:23:52
初心者スレか本スレに帰れ
400:nobodyさん
09/11/10 15:45:57
>>395
無事動作を確認できました!
Item.quote_value(1234) => "1234"
Item..quote_value(Item.first) => "1"
みたいにいけますた。何故か文字列ですがw
find_oneやfind_someになんであるのに、見つけられなかったんだろ、と
ドキュメントを思ってよく見たら
railsのchmファイルって、メソッドのソース表示は長い行だと折り返されないで、
画面外にでてって表示されないっぽいですね orz
他の場面でもソース見ててハマりそうだ・・・。
この辺てCSSとか直したらなんとかなるんかな。
401:nobodyさん
09/11/10 16:15:53
「SQL文の条件句に埋め込む数値の表現」なので、
最終的に文字列が得られるようになってるのよ。
402:nobodyさん
09/11/10 16:23:20
>>401
ああ、確かにドキュメントに
> Quote strings appropriately for SQL statements
と書いてありますね。
quote_〜〜ってメソッドたくさんあるし、なんのことかと思ったら、
SQLのためのクォート処理なんですね。
勉強になりました。
privateメソッドですし、期待する機能と名前が一致しない点もアレなのですが、
とりあえずは実現できるので ActiveRecord::Base::quote_value を使ってみます。
帰り値の文字列はto_iすればいいですし。
ありがとうございました。
403:nobodyさん
09/11/10 20:20:41
質問よいですか?
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のプレビュー用のモードというか、プレビューボタンを押した後指定のページ遷移までは
フラグ立てたまま処理する(「プレビュー中です」のような表示をしたい)というような場合や
食べた食品を記録するサイトで、ある日に記録するデータを検索窓から検索した場合、
その検索後のページ場合もそのある日を覚えておいて、記録時に使いたいといった場合です。
設計の問題なのかもしれませんが、ぜひご助言ください。
404:nobodyさん
09/11/10 22:01:55
formならhiddenでいいんじゃね?
405:nobodyさん
09/11/10 22:09:57
セッションに保存するのが駄目な理由が分からん。
application_controllerにチェックするメソッド定義して、各コントローラでfilterで呼ぶとか。
filterを工夫すればいいんじゃないの?
406:nobodyさん
09/11/10 22:11:23
>>403
例えば、link_toの場合は、こんな感じで書くとGETパラメータを付加してくれる。
formでも同じ事ができるかは分からないが。
<%= link_to("編集", :action => :edit, :id => @item, :params => params) %>
407:403
09/11/11 09:59:21
>>405
そういうことが聞きたいのです。
セッションだと、
>>403の下のブログやCMSの例でいえば、プレビューと実際の画面表示のコードを共有していた場合、
プレビュー中に、実際の画面みようとしてもプレビュー表示になってしまいますよね。
食品の記録サイトでいえば、別のタブで同時に別の日を入力しようとしていた場合、
セッションにある値しかつかわれないので、セッションにある日しか同時に入力できないことになります
つまり、セッションだと状態を1つしかもてない、という意味なのですが・・・
ま、仕様です、と言えば、それでもいいのかもしれませんがw
>>406
あ、いえ、今もそんな感じでやってるんです。
>>403のコード例がわかりにくいのですが、
form_tag でGETパラメータを指定しています。
ただし、指定するかは今のページのGETパラーメータを見てから。
>>404
確かにformならhiddenでもいいですね。GETパラメータでやらなくてもいいか
408:nobodyさん
09/11/12 03:49:23 K53v7ACD
ファイルをアップロードするときってform_tagとかfile_fieldを
つかってファイルを選ぶ方法しかないのでしょうか?
クライアントがパスを書いてそこにあるファイルをサーバに保存する
ことは不可能ですか?
409:nobodyさん
09/11/12 04:51:31
可能
410:nobodyさん
09/11/12 15:35:06
/etc/passwdとか上書き出来たら楽しいね。
411:nobodyさん
09/11/12 15:36:59
当たり前のような質問があります。
HogeControllerがあり、publicなメソッドとしてFoobarを新たに追加しました。
デフォルトのルーティングだと、
/hoge/foobar
でアクセスできるのですが、プログラム上からは
foobar_hoge_path()
が使えません。
rake routesしても載ってないのですが、
これって、routes.rbに
map.resources :hoge, :member => { :foobar => :get }
などとかかなくてはいけないものなのでしょうか?
412:nobodyさん
09/11/12 22:47:21
find_by_sqlで複数のSQLを実行したとき
返ってきた結果セットがほぼ同時に別プロセスで
実行していた別なSQLのものに変わってしまっています。
mysqlの設定などでチェックすべきところとかないでしょうか?
413:nobodyさん
09/11/12 23:21:24
>>411
無指定の map.resources だけだとそこまで面倒みてくれない。
map.resources に追加するか、昔ながらのやり方で
map.foobar_hoge 'hoge/foobar', :controller => 'hoge', :action => 'foobar'
のように定義してやるとか。
414:nobodyさん
09/11/12 23:37:15
トランザクションとかストアドプロシージャだろうか
やったことないけど
415:411
09/11/14 04:27:35
>>413
ありがとうございます。
こちらでも試してみましたが、やはり、必要なのですね。
>>411のは間違ってまして、/hoge/foobarの場合は、
map.resources :hoge, :collection => { :foobar => :get }
でした。
/hoge/1/foobarなら、>>411のでいいみたいです。
416:nobodyさん
09/11/17 14:03:16
ちょっと聞いていいでしょうか?
psousa's baseapp-orange at master - GitHub
URLリンク(github.com)
以前でてた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
とするのですが、何ごともなく終了します。
どうしたものでしょうか?
417:416
09/11/17 14:16:18
>>416 ですが、
ないならgemいれればいいんじゃね?という当たり前の結論で、
gem install capistrano-ext
したら、無事に通りました。(db:migrateでDBないと言われたので、rake db:createしましたら行けました)
しかし、何でこんな動作になっているのだろう?
なるべくシステムに入っているgemを使いたいのですが、満載のvendor/gems以下や、vendor/rails以下は
手動で削除しちゃっていいものなのでしょうか?
418:nobodyさん
09/11/17 16:12:30
rails 2対応の初心者用参考書でお勧めはどれですか?
419:nobodyさん
09/11/17 16:13:42
既存のapache管理下のものに影響与えないように導入することはできないのでしょうか
420:nobodyさん
09/11/17 18:37:57
>>418
>>350がいいんじゃないかと思う
421:nobodyさん
09/11/17 22:36:49
>>419
影響ってどういう意味?
422:nobodyさん
09/11/18 02:13:20
restful_authenticationを使ってログイン認証を行おうと思ってるんですが、
画面の遷移がない場合5分経ったらセッションを消してログアウト状態にしたいと思っています。
以前はacts_as_authenticatedを使って、ログインされたらデータベースのsessionテーブルにユーザーの
session情報を保存しておいて、ユーザーが画面遷移をしたら、そのsession情報を更新しておき
5分おきにsessionテーブルを監視して、更新時間が5分以上経ってたらsessionテーブルから削除するようにして
ログアウト状態を再現していました。
restful_authenticationを使う場合は、データベースに値を持たなくても上記のような事ができるのでしょうか?
すみませんが、お知恵をお貸しください。宜しくお願いします。
423:nobodyさん
09/11/18 17:36:25 8qlvL/3i
都道府県のデータをRubyの配列で用意しようと思うんだけど、
どこのファイルにおくのがおすすめでしょうか。
JP_STATES = [
'北海道',
'青森’,
...
]
こんな感じのデータです。
424:nobodyさん
09/11/18 18:51:10
Railsアプリのルートディレクトリを表す変数とかありませんか?
425:nobodyさん
09/11/18 22:12:48
>>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
426:nobodyさん
09/11/18 22:14:23
いまは Rails.root でもOK
427:nobodyさん
09/11/19 00:14:02
Wikiみたいなアプリで、文字列をHTMLに変換する処理をParserとしてモデルに切り分けたいのですが
url_forとかhoge_urlとかはモデルから使えないので、リンク生成をどうしたものかと思っています。
config/routes.rbの設定と重複しないために、できればURL生成メソッドで作りたいのですが
どうにかできないでしょうか?
428:nobodyさん
09/11/19 15:24:41
>>427
モデルじゃなくて(モデルでもいいけど)、
ふつうのライブラリみたいに lib/以下にParserとしておいて、
コンストラクタでコントローラーのインスタンスを渡す、とかどうだろか
lib/以下に置く時の注意は、moduleにしてRailsが想定する名前の付けか足しておくと、
requireとかしなくても、自動で読んでくれる。はず。
詳しい方きぼん
429:nobodyさん
09/11/19 15:32:45
ついでに質問なのですが、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側におけないものでしょうか?
430:nobodyさん
09/11/19 20:01:14
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のチュートリアルだと
URLリンク(rspec.info)
get 'some_action'
response.should have_text("expected text")
とあるので、getだけでいいと思うんですけど、ほかに何か必要でしょうか。
431:nobodyさん
09/11/19 21:37:22
>>429
プラグイン化するとか。
結局はincludeするんだけど、vendor/plugins に丸ごと置くだけでよくはなる。
432:nobodyさん
09/11/20 16:48:45
Railsで、text2html みたいなヘルパーってありませんでしたっけ?
「rails text2html」でぐぐっても、それらしいのは見つからず。
433:nobodyさん
09/11/20 17:56:43
RoRをWindows上で稼動させていてアップローダーを作ったところ
日本語のファイルがUTF-8で生成されてWindows上で文字化けします
ファイルを保存するときにSJISに変換しないといけないのでしょうか?
NTFS自体はUNICODE対応のはずだし
なにかが間違ってるような気がするんです
434:nobodyさん
09/11/20 18:02:42
>432
textile とか markdown のこと?
>433
お前が間違ってる
435:nobodyさん
09/11/20 18:55:59
form_remote_tagとselect_tagを使ってAjaxで選択リストの値を送りたいのですが、値を受け取るにはコントローラでどのようなコードを書けばよいのでしょうか?
436:nobodyさん
09/11/20 19:17:38
>>433
UTF-8で保存するのでもなければSJISで保存するのでもない
UNICODEで保存するんだぞ
437:nobodyさん
09/11/22 03:24:06
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です。
よろしくおねがいします。
438:nobodyさん
09/11/22 04:51:41 Z6X1KQFW
>>436
UNICODEで保存?
UTF-8/16じゃなく?
439:nobodyさん
09/11/22 06:54:00
write open するときに
OpenFileA()じゃなくて
OpenFileW()使えっていう意味では
440:nobodyさん
09/11/23 20:58:50
RailsでjQuery使うにはどうするのがよいんでしょうか?
jRailsというのがあったみたいですが、公式サイトなくなってるし・・・
jRails - jQuery on Rails
URLリンク(ennerchi.com)
441:nobodyさん
09/11/23 21:27:37
ふつうに <script src=></script> でいいんじゃないの?
442:nobodyさん
09/11/24 00:15:15
当方Windowsで開発をしています
ruby script/serverを実行した際に
C:\rails\hello>ruby script/server
=> Booting Mongrel
=> Rails 2.3.4 application starting on URLリンク(0.0.0.0:3000)
=> Call with -d to detach
=> Ctrl-C to shutdown server
でコマンドプロンプトが次のWEBRICKが起動した〜などを出力してくれません
Ctrl-Cをしてもサーバーは停止できません
一度だけこの状態で長時間放置したときに
500 Internal Server Error
unknown error
という表示がされました
解決方法がさっぱりわかりません
どなたか解決方法知っている方がいれば教えていただけるとありがたいです
443:nobodyさん
09/11/24 00:38:56
こっち最新なんだろうか
URLリンク(github.com)
444:nobodyさん
09/11/24 03:53:25 igGLII2V
>>442
まるち
445:nobodyさん
09/11/24 07:33:31
>>442
誘導されておきながらそれを書かないからマルチ扱いされる
あと誘導前のスレにも移動する事くらい書いた方がいい
ちなみにMongrelの事は知らないので質問には答えられない
446:nobodyさん
09/11/24 09:45:43
>442
もっと詳しく。
エスパーは希少なのでそれだけの情報では足りない。
何が足りないのかは考えろ。
447:nobodyさん
09/11/25 01:38:14
知らんがな。
自分で調べる能力無いなら、サポートしてくれる業者を捜すなり、商用ソフトでも使ってサポート受けたら?
スレリンク(php板)
【PHP】下らねぇ質問はID出して書き込みやがれ 90
スレリンク(php板)
【質問】ASP.NETスレ Part6【雑談】
スレリンク(php板)
【 スクリプト改造依頼スレ】(丸投げ) part7再々
スレリンク(php板)
△▲ WebProg 初心者の質問 Part21 ▼▽
スレリンク(php板)
くだらない質問でもど偉そうに聞いていいスレ
448:nobodyさん
09/11/25 16:20:37
>>442
何をしたいのか、何を聞きたいのか、意味がわからん。
mongrelをgemで入れている環境なら、script/serverはwebrickではなく自動でmongrelが起動するよ。
webrickを明示的に起動したかったら、 script/server webrick
とかするんじゃなかったかな?調べてみて。
Ctrl-Cは何回かおしたら止まる気はする
449:nobodyさん
09/11/25 16:25:33
質問をお聞きします。
viewやヘルパーを書く時に、javascriptのパスを渡したいのですが、
javascrip_path "hoge" などと書くと、
/javascript/hoge.js
というのが得られるのですが、viewでjavascript_include_tagメソッドで得られるように、
/javascript/hoge.js?1259048403
のようなキャッシュしないパスを簡単に得るメソッドはないものでしょうか?
ソースも見ているんですが、どこで付加されているのかイマイチわからんです・・・
450:449
09/11/25 16:51:10
実際はlib/以下に配置したモジュール内から、以下のようにして記述しているのですが、
ApplicationController.helpers.javascript_path "hoge"
hoge.js?1235343 のようになってくれません。
Rails consoleで上記を試すとちゃんとついてくれるのですが・・・
451:nobodyさん
09/11/25 17:02:11
わからないけど、これは関係あるだろうか
cache_asset_timestamps
452:449
09/11/25 17:24:16
>>451
ありがとうございます。
ソースも見ていたのですが、該当箇所はわかりました。
javascript_path→compute_public_pathときて、rewrite_asset_path内で?のあとにタイムスタンプを付加しているようでした。
で実はできねーよヽ(`Д´)ノ ウワァァン!!と思って四苦八苦していたのですが、
別のビューの似たようなページのソースをずっと見ていました orz
正しいページを見たら、ちゃんと
/javascript/hoge.js?1259048403
というようになっていました。
解決しました。
おかげさまでありがとうございました。スレよごしスマソ
453:nobodyさん
09/11/26 11:02:42 S4TWLvc3
Ruby 1.9 And Rails 3.0
URLリンク(www.slideshare.net)
454:nobodyさん
09/11/26 17:33:35
ぬるぽ
455:nobodyさん
09/11/26 17:50:14
Rails 2.3 = Rails 3.0 ってあるけど、そうなの?
456:nobodyさん
09/11/26 19:34:03 S4TWLvc3
First look at rails 3.0.pre
URLリンク(drnicwilliams.com)
URLリンク(woodie-rails.appspot.com)
rails 3.0 pre
URLリンク(github.com)
URLリンク(woodie-rails.appspot.com)
457:nobodyさん
09/11/27 00:40:04
ossでソースきれいで参考になるプロダクトってある?
458:nobodyさん
09/11/27 16:27:52 uE3HMbl5
rails version 2.3.5 just released.
459:nobodyさん
09/11/27 17:51:25
やっとこさrails2系に慣れてきたのにrails3とかワロス
460:nobodyさん
09/11/27 18:43:36
config/locales/ja.ymlを作って
ja:
Hello: こんにちは
と書いた。あとconfig/environment.rbに
config.i18n.default_locale = :ja
を追加した。それでも ruby script/console を実行して
irb> I18n.t('Hello')
=> "translation missing: ja, Hello"
となる。
何が足りない?誰か助けて。
461:nobodyさん
09/11/27 18:59:16
>>460
サンプルの config/locales/en.yml にあるキーは小文字の hello なんだが、
YMLに小文字で書いて呼び出しで大文字のHelloを使っているのではあるまいか?
462:nobodyさん
09/11/28 00:57:41
>>460
config/locales/ja.ymlは、このようになっていないと動かない。
この状態で、I18n.t("hello")で翻訳される事を確認した。
-----------------------
ja:
hello: こんにちは
-----------------------
単に、hello: の行だけでは動かなかった。
たぶん、そのあたりじゃない?
463:462
09/11/28 01:06:47
あ、ごめん。
よく見てみたら、>>460もちゃんと書いてたね。
ちなみに
ja:
hello: こんにちは(hello)
Hello: こんにちは(Hello)
って書いたら、こうなったので全部小文字で書かないといけない
という事はなさそう。
>> I18n.t("hello")
=> "こんにちは(hello)"
>> I18n.t("Hello")
=> "こんにちは(Hello)"
確認したrailsのバージョンは2.3.4。
464:nobodyさん
09/11/28 01:21:36
>>463
全部小文字で書かないといけないというわけではなく、
ファイルでしたキーとコードから参照したキーが違ってるんじゃないかという
指摘だと思う。
ただのYAMLで定義したHashだし。
465:nobodyさん
09/11/28 17:18:18 gofPBBCV
10,000,000 todos
URLリンク(twitter.com)
466:nobodyさん
09/11/30 00:11:03
>>198
> 教祖がデビアンで開発してるから、
そのわりにパッケージが古いんだよな。
railsはgemで入れるとしてrubyがいつもチョット古いのが面倒だ。
467:nobodyさん
09/11/30 03:07:01
>>466
sidも古いの?
468:nobodyさん
09/11/30 15:32:02
<%=h foo.bar.name.blank? ? '-' : foo.bar.name %>
というのが頻繁にでてくるので、ヘルパーメソッドを定義したい。
def default_val(val, default='-')
val.blank? ? default : val
end
・質問1: すでにこのようなメソッドはありますか?
・質問2: いいメソッド名があれば教えてください。
469:nobodyさん
09/11/30 16:49:47
1: ないと思う
2: value_or_default(foo.bar.name) とかどうだろ
470:nobodyさん
09/11/30 18:24:46
>>469
さんくす。
できればもうちっと短い名前がいいんだが。いいのがないものか。
471:nobodyさん
09/11/30 19:20:53
#blank? になるものが常に偽とみなせるなら foo.bar.name || '-' でいいんだけどねー。
"" とか [] は #blank? になるけど真だからなあ。
472:nobodyさん
09/11/30 20:45:02
blank?で判断する || 演算子が欲しくなるな。
473:nobodyさん
09/11/30 21:33:41
StringとNilClassにorってメソッドを・・・
474:nobodyさん
09/12/01 11:59:14
Rails初心者です。
fixturesは使わずに手軽にテストデータを入れようと、
勝手データテキストファイルと勝手スクリプトを書いて、
/db/migrateに両方起きつつ、NetBeans上からファイルを実行してみたのですが
ファイル読み込みの時点でNo such file or directoryとなってしまいます。
そこで質問ですが、
●このデータにアクセスさせるためにはどう書くべきですか?
●データ投入はfixturesを必ず使うべきですか?
よろしくお願いします。
475:nobodyさん
09/12/01 19:09:38
>474
知るか
476:nobodyさん
09/12/02 11:16:20
>>474
・Rails環境を利用した勝手スクリプトはscript/runner経由で使う
他なにかあったけ。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5388日前に更新/279 KB
担当:undef