0

私のビューには、JSON 形式のデータで応答するコントローラー (HTTP "GET") の "new" アクションへのリンク (remote: true) があります... AJAX を使用して、coffeescript ファイルにレンダリングを追加したいAJAXの成功に部分的...

コードは次のとおりです。

$ ->
$('a').click (e) ->
    e.preventDefault()

    url = $(this).attr('href')

    $.ajax
        type: 'get'
        url: url
        dataType: 'json'
        success: (json) ->
            # I want to do something like this:
            $('body').append(render :partial => "questionForm", :locals => {:q_id => json.q_id})

これは明らかに正しい構文ではありません...どうにかしてルビーを私のjs.coffeeに埋め込むことは可能ですか? 他のすべてをチェックしましたが、次のようなことをした場合:

$('body').append(json.q_id)

それは機能します-したがって、AJAX呼び出しと「新しい」アクションなどはすべて機能しているようです..何かアイデアはありますか? このようなことは可能ですか?

4

1 に答える 1

1

サーバーからデータを返す場合は、クライアント側の魅力的なシステム (ハンドルバー、jquery-templates、eco) を使用して json データを取得し、それを HTML に変換することをお勧めします。

サーバーに HTML をレンダリングさせたい場合は、サーバーに HTML をレンダリングさせ、jquery を使用して追加することができます。

何かのようなもの:

<%= link_to "New Model", new_models_path, remote: true, id: "batman" %>

次に、app/models/new.js.erb で次のようにします。

$("#batman").html("<%= escape_javascript(render partial: "models/form", locals: {model: @model})%>");
于 2012-06-26T18:19:53.350 に答える