1

我已经成功地尝试使用 ajax 表单在我的示例表单中保存 ajax。

新值将添加到数据库中。但问题在于,一旦我通过 ajax 保存,就从数据库中检索列表。

怎么做。?

添加新记录后,我希望更新显示列表。添加新记录和列出数据库中的数据的选项都在同一页面中

这是我的索引页面。控制器和所有其他通过脚手架创建的

<h1>Listing samples</h1>

<table>
  <tr>
<th><%=t :Name%></th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @samples.each do |sample| %>
  <tr>
    <td><%= sample.name %></td>
    <td><%= link_to 'Show', sample %></td>
    <td><%= link_to 'Edit', edit_sample_path(sample) %></td>
    <td><%= link_to 'Destroy', sample, :method => :delete, :data => { :confirm => 'Are you sure?' } %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New Sample', new_sample_path %>

<br /><br /><br /><br /><br />
<%= semantic_form_for @sample1,:url => samples_path, :remote => true do |f| %>
  <%= f.inputs do %>

    <%= f.input :name %>
  <% end %>
  <%= f.actions do %>
    <%= f.action :submit, :as => :input %>
  <% end %>
<% end %>
4

2 回答 2

4

当您通过 ajax 保存时,您可能需要更改控制器的响应方式,有点像这样:

def create
  # stuff
  respond_to do |format|
    format.js
  end
end

当您执行此操作时,rails 会希望您创建一个名为 的文件create.js.erb,您可以在其中操作视图的数据(将新内容附加到表中,使用新对象列表渲染一个全新的部分,等等):

$('#your_list').html(
  "<%= escape_javascript(render('your_table_partial')) %>"
);

或者

$('#your_list').append(
  "<%= escape_javascript(render('your_item_of_the_table_partial')) %>"
);

这些只是示例,我不知道您的代码足以为您编写正确的代码,但您肯定可以将这些用作您工作的基础。

于 2012-12-12T10:32:05.190 回答
2

我使用这些指南进行了 CRUD 操作,效果很好

http://stjhimy.com/posts/07-creating-a-100-ajax-crud-using-rails-3-and-unobtrusive-javascript

于 2012-12-18T05:47:31.010 回答