如何在ruby on rails上提交新创建的对象的表单后,如何更新使用集合呈现的部分列表

时间:2013-04-02 02:26:03

标签: ruby-on-rails-3 renderpartial

这是我的群组视图的一部分。我有一个部分列表,我用一组对象渲染:

<div id="container">
  <ul>
    <li id="form"></li>
    <li id="partials">
      <%= render :partial => 'groups/partial-list-row', :collection => @allpartials, :as => :f %>
    </li>
  </ul>
</div>

在id为“form”的列表项中,rails表格上有一个ruby,它是一个form_for @newpartial,在Partial控制器中定义为@newpartial = Partial.new()。我已成功使用jquery在“New Partial”按钮单击时切换显示和隐藏两个列表项,并在完成完成的表单后,肯定会创建一个新的部分对象。我在这里寻找的是在表单提交包括新创建的部分对象后重新出现的部分集合。做这个的最好方式是什么?我的表单位于id为“form”的列表项中,如下所示:

<%= form_for @newpartial, :html => {:multipart => true, :class => 'custom'}, remote: true do |f| %>
  <% if @newpartial.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@newpartial.errors.count, 'error') %> prohibited this partial from being saved:</h2>
      <ul>
        <% @newpartial.errors.full_messages.each do |msg| %>
          <li><%= msg %></li>
        <% end %>
      </ul>
    </div>
  <% end %>
  <%= render :partial => 'partials/form-partial', :locals => { :f => f } %>
  <div class="actions">
    <%= f.submit 'Launch', :class => 'large success button radius new_browser_tab' %>
    <a class="cancel_campaign_new">Cancel</a>
  </div>
<% end %>

在DOM完全加载后,我也成功创建了一个与此窗体的“ajax:success”事件相关的函数。我只是不知道这是否是一种正确的方法,如果是,我不知道这个事件处理程序的主体应该包含什么。我已经创建了与此相同问题相关的其他问题(我现在已经很长时间没有找到解决方案了)。如果您想要其他背景,以下是问题:

1 个答案:

答案 0 :(得分:0)

我没有意识到在表单上应用remote: true表示控制器的操作方法将使用模型“action”.js.erb文件进行响应。在创建该文件并执行我一直想要的jquery之后,我能够解决一些问题并使该部分正常工作。

将jquery放在客户端javascript中的新部分和“action”.js.erb文件之间的区别在于“action”.js.erb文件能够向服务器发出所需的请求,而你的客户端javascript不是。

有人可以阅读此内容并告诉我上述陈述是否准确?我真的希望为遇到这种情况的人提供尽可能准确的答案......

CodeSchool.com有一些非常好的教程,有一些免费课程,包括视频讲座,幻灯片和练习,我最后给了我足够的指导。另外值得一提的是,如果你打算快速学习这些东西并计划花费大量时间来开发你的网络开发能力,那么每月支付20美元用于访问所有课程是值得的(你可以随时取消,所以学习你需要学习和继续学习的东西!)。