0

アセット ディレクトリで JavaScript からパーシャルをレンダリングしようとしています。assets ディレクトリ内で render メソッドを呼び出せないことがわかりました。しかし、アセットディレクトリから ajax コマンドを移動することもできません。だから私の質問は今、私のビューで私のajax結果をaction.jsファイルに渡す方法です。

そこで、onclick jQuery イベントで ajax を呼び出します。

/app/javascript/mymodel.js.coffee

$(document).ready ->
---some actions ----
$('.myid').click ->
    ---some action---
    $.ajax 'mypath'
        dataType: 'json'
        success: (result)->
            ---render result in partial on myid-div---

では、最愛の結果と myid を次のように渡すにはどうすればよいですか。

/app/views/mymodel/show.js.erb

$('.myid').html("<%= escape_javascript( render( :partial => 'myartial') ) %>");  

それをレンダリングするには?

私はかなり長い間これについて頭を悩ませているので、助けていただければ幸いです!

4

2 に答える 2

0

mymodel コントローラーのメソッドを呼び出してパーシャルをレンダリングできますが、パーシャルのファイル名はアンダースコアで始まる必要があります_

あなたの例では、これらのコード を mymodel コントローラーに配置し、mymodel のビューで名前をrender :partial => 'show'変更する必要がある場合、これらのコードは js をレンダリングするために機能する可能性があります。show.js.erb_show.js.erb

楽観的であるためには、レンダリングできる必要があり、ターミナル内で成功した_show.js.erbようなものを見ることができます。render _show.js.erb

しかし、js.erb に構文エラーがあるため、レールが js.erb を javascript として処理していたという意味ではありません (私は絶対に確信しています!!)。だからあなたも変わるかもしれません

$('.myid').html("<%= escape_javascript( render( :partial => 'myartial') ) %>");

$('.myid').html('<%= escape_javascript( render( :partial => 'myartial') ) %>');

詳細については、私の質問をご覧ください。以前にも同様の問題に直面しました。また、ajax 呼び出しを送信して .js.erb をレンダリングする方法の例も示します。

:remote => trueに ajax リクエストを送信しline_items_pathます。

そして、ルーティングに従って create メソッドを呼び出し、format.js がcreate.js.erb規則に従ってレンダリングします。または、存在するformat.js {render :partial=> "create"}場合は js.erb をレンダリングできます_create.js.erb

于 2012-09-13T18:08:25.963 に答える
0
$(document).ready ->
---some actions ----
$('.myid').click ->
    ---some action---
    $.ajax 'mypath'
        dataType: 'json'
        params: (pass in what you need, i don't know the exact syntax, just google it)
        success: (result)->
            ---render result in partial on myid-div---
controller

def show
  @result = params[:result]
end

view
show.js.erb
$('#some_id').html('<%= render("mypartial").html_safe %>');

@result にアクセスできるようになりました

結果を AJAX 呼び出しのパラメーターとしてコントローラー メソッドに渡します。次に、インスタンス変数 (たとえば、パラメーターからの @result) をインスタンス化します。これにより、ビューはインスタンス変数を使用できなくなります。

于 2012-09-13T16:39:09.620 に答える