0

静的ページと静的コントローラーがあります。このページでは、4 つのカテゴリで Jquery UI アコーディオンを使用しています。各カテゴリには、個別のコントローラー、モデル、およびビューがあります。すべてのカテゴリをアコーディオンにレンダリングして、個別に動作するようにしようとしています。それで問題が発生したので、静的ページにフォームを作成して次のようにしてみました。しかし、すべてのフォームが最初のタブで開かれました。タブごとに個別にフォームを開いて保存したい。どんなアイデアでも大歓迎です。ありがとう

<div class="funding_form">
  <%= form_for(@funding_source, :remote => true) do |f| %>
    <fieldset>
      <legend>Funding Source</legend>
      <div class="control-group">
        <%= f.label :Source_name, 'Funding Source Name' %>
        <%= f.text_field :Source_name %>
      </div>
      <div class="action">
        <%= f.submit 'Save Source name', :class => 'funding_save', remote: true %> | <%= link_to 'Cancel', "#",  {:remote => true, :class => 'funding_cancel_button' } %>
      </div>
    </fieldset>
  <% end %>
</div>

<div class="packages_form">
  <%= form_for(@package, :remote => true) do |f| %>
    <fieldset>
      <legend>Packages</legend>
      <div class="control-group">
        <%= f.label :Package_name, 'Package Name' %>
        <%= f.text_field :Package_name %>
      </div>
      <div class="action">
        <%= f.submit 'Save Packages', :class => 'package_save', remote: true %> | <%= link_to 'Cancel', "#",  {:remote => true, :class => 'package_cancel_button' } %>
      </div>
    </fieldset>
  <% end %>
</div>
4

1 に答える 1

2

コントローラーでアクションを呼び出すために、タブのクリック アクションに ajax リクエストを配置してみませんか。つまり、@package コントローラーに、呼び出されたときに部分パッケージ形式をレンダリングするメソッドがあります。その後、ajaxリクエストでこれを呼び出すことができます:)

たとえば、コントローラーで部分的な「フォーム」をレンダリングしたい場合は、次のようなコントローラーメソッドを使用できます。

def return_data
 @package = Package.find(params[:id])

 render partial "form"
end

次のような ajax リクエストを使用して呼び出すことができます。

 $.ajax({
  url: '/your_path/return_data',
  dataType: 'html',
  success: function(data){
    console.log(data)
  },
  error: function(data){
    console.log(data)
  });

あなたはそれを表示することができます、おそらくパーシャルをdivに割り当てて、ajaxリクエストを行うたびにそれを上書きして、1つだけが表示されるようにします:)

于 2013-02-20T10:07:05.397 に答える