rails3 jpmobile+ファイルアップロード

110 views
Skip to first unread message

douhashi

unread,
Dec 31, 2010, 2:43:51 PM12/31/10
to jpmobile
はじめまして。douhashiと申します。
新年明けましておめでとうございます。

rails3 + jpmobile でアプリケーションを作成させていただいております。
が、一つ問題が起こりまして、ネット上でも解決策が見つからず投稿いたしました。

とあるコントローラでCSVファイルアップロードを実装する必要があり、単純な実装をしています。
view:
<%= form_for(:file, :url => some_path, :html => {:multipart => true})
do |f| %>
<%= f.file_field :data %>
<%= f.submit "登録" %>
<% end %>
<% end %>

controller:
file = params[:file][:data]

こうした場合に、本来#<ActionDispatch::Http::UploadedFile:0x106e05680>のようなオブジェクトにな

はずですが、実際は"#<ActionDispatch::Http::UploadedFile:0x106e05680>"という文字列に解釈され
てしまいます。

jpmobileをGemfileから消すと正常動作するのでjpmobileがパラメータ解釈のタイミングでやっている動作によるもの
(すいません、ソース読みきれていなく、調べきれていません)かと思うのですが、これに対する解決策はありますで
しょうか?

過去に解決されている問題であれば、申し訳ありません。

douhashi

Shin-ichiro OGAWA

unread,
Jan 5, 2011, 5:06:42 AM1/5/11
to jpmo...@googlegroups.com
小川です。

> こうした場合に、本来#<ActionDispatch::Http::UploadedFile:0x106e05680>のようなオブジェクトにな
> る
> はずですが、実際は"#<ActionDispatch::Http::UploadedFile:0x106e05680>"という文字列に解釈され
> てしまいます。

アップロードのところですね。
これはバグなので、修正します。
もう暫くお待ちください。

--------
小川 伸一郎 (Shin-ichiro OGAWA)
rust....@gmail.com
GPG ID 94B70E36 / 75360751
fingerprint: {C64E 9826 8A75 723E DE54 / 70A8 F623 220C 94B7 0E36}
http://stnard.jp/
http://twitter.com/conceal_rs/
http://iddy.jp/profile/rust/

2011/1/1 douhashi <douh...@gmail.com>:

> --
> このメールは Google グループのグループ「jpmobile」の登録者に送られています。
> このグループに投稿するには、jpmo...@googlegroups.com にメールを送信してください。
> このグループから退会するには、jpmobile+u...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/jpmobile?hl=ja からこのグループにアクセスしてください。
>
>

wtnabe

unread,
Jan 19, 2011, 9:48:11 AM1/19/11
to jpmobile
wtnabeです。

On Jan 1, 4:43 am, douhashi <douha...@gmail.com> wrote:
> こうした場合に、本来#<ActionDispatch::Http::UploadedFile:0x106e05680>のようなオブジェクトにな
> る
> はずですが、実際は"#<ActionDispatch::Http::UploadedFile:0x106e05680>"という文字列に解釈され
> てしまいます。

昨日からまったく同じ現象でハマっていました。
で、今日急場しのぎの解決策ができました。

https://gist.github.com/786125

に上げた内容を initializer などで読み込んであげると回避できます。

恐らく lib/jpmobile/util.rb の deep_* メソッドで、変換対象から除外す
る判別に ActionDispatch::Http::UploadedFile が入っていないからです。こ
れは恐らく Rails 独自のクラスなので、util.rb の中だけで判別しようとする
とちょっとイマイチな感じになってしまいますね。

除外対象かどうかを判別するメソッドを一つ用意して、rails.rb で
override しちゃうような感じですかねぇ。

--
wtnabe

Shin-ichiro OGAWA

unread,
Jan 19, 2011, 8:28:27 PM1/19/11
to jpmo...@googlegroups.com
小川です。

なるほど、そこですか。

この場合、そもそもdeep_*の適用条件の見直しが必要だと思うので、
そこから対処して早めに0.1.5リリースすることにします。

--------
小川 伸一郎 (Shin-ichiro OGAWA)
rust....@gmail.com
GPG ID 94B70E36 / 75360751
fingerprint: {C64E 9826 8A75 723E DE54 / 70A8 F623 220C 94B7 0E36}
http://stnard.jp/
http://twitter.com/conceal_rs/
http://iddy.jp/profile/rust/

2011/1/19 wtnabe <wtn...@gmail.com>:

堂端翔

unread,
Jan 20, 2011, 8:48:59 AM1/20/11
to jpmo...@googlegroups.com
小川さん、wtnabeさん

堂端です。

ありがとうございます。
とりあえずwtnabeさんのコードを当てることで現状回避しました。

util.rbのコードを読んでやっと現象に納得がいきました。
もう少し深くまでコード読んでおけばよかった...

ありがとうございました。

堂端

2011年1月20日10:28 Shin-ichiro OGAWA <rust....@gmail.com>:

wtnabe

unread,
Jan 20, 2011, 7:44:59 PM1/20/11
to jpmobile
wtnabeです。

On 1月20日, 午後10:48, 堂端翔 <douha...@gmail.com> wrote:

> とりあえずwtnabeさんのコードを当てることで現状回避しました。

あ。もう 0.1.5 がリリースされたので update するだけで直りますし、そっ
ちの方がいいと思いますよ。

--
wtnabe
Reply all
Reply to author
Forward
0 new messages