0

json を返す検索メソッドに ajax 呼び出しを行うための form_tag があります。

= form_tag '/search',:remote => true,id: 'form', method: :post do
  = hidden_field_tag '_method,', :put 
  .row.form_attributes
    = text_field_tag :location, nil, placeholder: "San Francisco, CA"
    = submit_tag "Search", :class=>"btn btn-primary"

これが私のコントローラーアクションの最後のステートメントです:

def search
  #irrelevant code 
  render json: stripped_events.to_json
end

返された json を取得して操作できるように、次のリスナーをセットアップしました。

console.log("LOAD");
$('#form').bind('ajax:success', function(xhr, data, status){
  console.log("WIN");
  console.log(data);
});

コンソールに「LOAD」と表示されているので、JavaScript がロードされていることがわかります。私はまた、ディスカッション、rails3 rails.js および jquery が ajax リクエストの成功と失敗をキャッチすることを試みましたが、成功しませんでした。

何かアドバイス?

4

1 に答える 1

1

Instead of returning JSON to the browser, you could respond with JavaScript instead:

def search
    #irrelevant code
    @stripped_events = ...

    respond_to do |format|
        format.js
    end
end

And then create a view template called search.js.erb in app/views/controller_name. This file is ERB-evaluated JavaScript, so you can use Ruby in it just like an HTML ERB template. The JavaScript in this file will be executed in the context of the browser.

console.log("WIN");
<% for stripped_event in @stripped_events %>
// use JavaScript / jQuery to manipulate the DOM
<% end %>
于 2013-05-25T22:44:39.200 に答える