2012年10月15日月曜日

てんやのなぞ


(絵と本文は関係あってこれはおれがてんやで天丼なす乗せを食べている所です。もちろんウソです)


てんやではいつもボーカルなしのカラオケがBGMでかかってる

2012年10月4日木曜日

逃亡編

(例によって絵と本文は関係ありません)
前編: herokuでform_tagの:remote => trueが動かない の続き

結論から行くと、なんとかなりました。
端的に言うと

:remoteの代りにformのactionでjQueryを使用してajaxを実行

です。

はい。逃げました。


そ、Solutionが多数用意されているというのもRailsの柔軟性の高さですね。
とかなんとか。

具体的には

view/layoutで参照されているlayout(一般的にはapplication.html.erb)に下記を定義
var doPost = function (url) {
    $.ajax({
    url: url,
    type: "post",
    data: "comment="+$("#comment").val(),
    dataType: "script"});
};
$("#comment")はjQueryによるSelectorです。
<% form_tag ... %>~<% end %>中に
<%= text_field_tag :comment %>
があれば、id="class"で上記のSelectorは正しく動く、はず。

で、あとは、form_tagのactionから上記のdoPostを呼ぶようにすればOK
<%= form_tag ("javascript: doPost(\"/sessions/\"") do %>
本当は、:remoteと完全に同じ挙動にするためには以下にしたかった

<%= form_tag ('#', :onsubmit => "doPost(\"/sessions/\"); return false;") do %>
でもやっぱり、form_tagが第二引数を取ってくれないので相変わらずエラーになるので逃げた。


逃げるが勝ち