1

<%= image_tag .. %>Rails のビュー ヘルパーやフォーム ヘルパーを使用できるようにしたいと考えています<%= select_tag .. %>このスレッドを読んで、erb をいくつかの javascript 変数の文字列として事前にレンダリングし、それをテンプレートから呼び出すことを提案しました (js テンプレートが呼び出される前に利用可能である必要があります)。だから私はこのようなことができます:

view_helpers.js.erb

<script type="text/javascript">
  var ViewHelpers = {
      CountrySelect: "<%= select_tag "person[country_id]", options_from_collection_for_select(Country.all, "name", "id"), :prompt => '-Country-' %>"
  };
</script>

そして、私のエコ テンプレート (後でレンダリング) から呼び出します。

edit_person.jst.eco

...
<p>
  <label for="person_country_id">Country</label>
  <%= ViewHelpers.CountrySelect %>
</p>
...

ただし、ビューの一部として、またはアセット パイプラインを使用してロードすることができないようです。

アセット パイプライン: application.js

(app/assets/javascripts/views/people/view_helpers.js.erb に保存)

//= require ./views/people/view_helpers

また

ERB テンプレート: views/people/index.html.erb

(app/views/people/view_helpers.js.erb に保存)

<%= render :template => 'people/view_helpers' %>

私はこの問題に完全に間違って取り組んでいますか、それとも何かを見逃していますか? ありがとう。

4

1 に答える 1

1

はい、可能です。パーシャルでも使用できます。

update_js.js.erb:

$('#element').html('<%= escape_javascript(render(:partial => @partial, :locals => {:my_var => @item })) %>');

コントローラーでは、フォーマットが必要ですjs

   respond_to do |format|
      format.js do
        render :update_js do |page|
          page.replace_html "element", :partial => @partial
        end
      end
    end

このjsをAJAXで呼び出したい場合は:remote => true、リンクに渡すだけです

<%= link_to 'replace content', item_path(@item), :remote => true %>
于 2012-11-13T12:42:11.080 に答える