1

このリンクのようにAJAXリクエストでRailsパーシャルをレンダリングしようとしています(また、レンダリングされたパーシャルにローカル変数を渡します):

http://isotope11.com/blog/render-partials-with-ajax-requests

彼がやっていることは、.get を使用して、パーシャルをレンダリングするコントローラーへの ajax 呼び出しを行うことです。

  $.get("/ean_hotels/"+ id, params, function(data){
  $('#hotelModalContent').html(data);
  }, "html");

  $('#hotelModal').reveal();

そして、hotels_controller.rb のコントローラー アクションの最後にある "render":

render partial: 'hotel_modal_content', locals: { hotel: @hotel, hotel_review_widget: hotel_review_widget }, layout: false 

コントローラ コードが、レンダリングされるパーシャルのローカル変数を設定していることがわかります (つまり、hotel と hotel_review_widget)。

元の .get AJAX 呼び出しからこれらのローカル変数を渡す方法がわかりません。

また、.get を使用して AJAX 呼び出しを行うときの params の意味もわかりません。

ローカル変数を javascript から、ローカル変数をパーシャルの変数にマップする hotels_controller.rb に渡すことができるようにしたいと思います。

ここで何か助けていただければ幸いです。

編集:

部分コードの追加

_hotel_model_content.html.erb

<h3><%= hotel %></h3>
4

1 に答える 1

0

クライアント

$.getおよび$.ajaxのドキュメントによるとparams、URL のクエリ文字列部分に入ります。

// request to /somethings?a=abc&b=2
$.get('/somethings', {a: 'abc', b: 2})

サーバ

クエリ文字列パラメーターは、R​​ails アクションから と呼ばれるハッシュのようなオブジェクトを介してアクセスできますparams[1]

class SomethingsController < ApplicationController
  def index
    puts params[:a] # if URL was /somethings?a=123, will print 123
  end
end

それを一緒に入れて

パーシャルを使って完全な例を作りましょう。

クライアントコードは次のとおりです。

// client call to /somethings?name=Something+123
$.get('/somethings', {name: 'Something 123'}, function(data){
  $('#target').html(data);
});

サーバーは次のとおりです。

class SomethingsController < ApplicationController
  def index
    # bind controller variable @name
    @name = params[:name]
  end
end

ビュー内app/views/somethings/index.html.erb

<%= render :partial => 'some_partial', :locals => {:name => @name} %>

部分レンダリングをビューに移動しました。ビューからのパーシャルのレンダリングは、コントローラーから直接パーシャルをレンダリングするよりも標準的だと思います。

于 2013-01-22T04:17:29.587 に答える