如何在轨道上的ruby中以一种形式呈现多个表单?

时间:2013-02-20 09:21:40

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个静态页面和静态控制器。在页面上午使用Jquery UI Accordion四个类别。每个类别都有独立的控制器,模型和视图。我试图将所有类别渲染成手风琴,并像分开一样工作。我遇到了问题,所以,我尝试在静态页面中创建一个表单并执行以下操作。但是在第一个选项卡中打开了所有表单。我想按标签打开并单独保存表单。任何想法都会更受赞赏。谢谢

<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>

1 个答案:

答案 0 :(得分:2)

为什么不在选项卡的单击操作上放置ajax请求,以在控制器中调用操作。即在@package控制器中有一个方法,在调用时,将呈现部分包形式。然后,您可以使用ajax请求调用它:)

例如,在您的控制器中,您可能希望渲染部分&#34;形式&#34;你可以有这样的控制器方法:

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)
  });

然后您可以显示它,也许将partial分配给div并在每次发出ajax请求时覆盖它,以便只显示:)