/ /作成または破棄以外のアクションでRailsを使用してAJAX呼び出しを行う方法-jquery、sql、ruby-on-rails、ruby、ajax

jQuery、sql、ruby-on-rails、ruby、ajaxの作成または破棄以外のアクションでRailsを使用してAJAX呼び出しを行う方法

アクションでAJAX呼び出しを作成したいのですが、私のデータベースのフィールドがクリックで更新されるように、それを「見た」と呼びます。これは、昨日受け取った以前の回答に対するフォローアップの質問です。私はかなり経験が浅いので、我慢してください。

<%= button_to "Click me!", :action => "some_action", :remote => true %>
Which will send an AJAX request back to the server, in which you need to handle in your controller

def some_actoin
// Update your database here
respond_to do |format|
format.js { render "somepartial" }
end
end

この答えは本質的に、def some_actionに関連付けられたルートを作成する必要があることを意味しますか?もしそうなら、このルートはどのような形式を取るべきですか。

ユーザーがページから移動するのは望ましくありません。単に現在のページの1つのdivを更新したいだけです。

回答:

回答№1は1

良いスタートを切りました。 そのボタンがクリックされると、rails /サーバーはそのコントローラー/ some_actionにHTTPリクエストを送信します。データベースに保存する必要があるアクションメソッドにヒットします。そこからjavascriptで応答します(したがって、format.js)。応答しているjavascriptファイル(プロトタイプではなくjqueryを使用していると仮定)は、some_action.js.erbと呼ばれます。そのファイル内に、ajaxリクエストが返されたときに発生させたいすべてのjquery関数呼び出しなどを配置します。

編集:

ルートをさらに明確にする。通常どおり、controller / some_actionにアクセスできる必要があります。これは、ルートを定義する必要があることを意味します。

match "controller/some_action" => "controller#some_action"

ただし、レールにリモートルートを指示するために特別なことをする必要はありません。


回答№2の場合は1

基本的に、はい、routes.rbファイルにルートを追加する必要があります。

したがって、コントローラーの名前がposts_controllerで、特定の投稿を表示済みとしてマークする場合は、次のようにします。

map.resources :posts, :member => {:seen => :post}

これにより、/ posts / 1 / sawedへのルートが追加されます(「1」は、seenアクションを実行する投稿のIDです)