我想通过ajax更新表单提交而无需重新加载页面并根据它更新视图。我尝试了不同的方法,但作为Rails的新手失败了。
这是情况。
模态
def new @new_entry = current_user.notes.build @words = current_user.notes @notes_false_list = current_user.notes.where(known: false).order("title").group_by { |note| note.title[0] } @notes_true_list = current_user.notes.where(known: true).order("title").group_by { |note| note.title[0] } end
在查看表单代码。
<%= form_for @new_entry, :html => {:class => 'home-form without-entry clearfix'} do |f| %> <%= f.text_field :title, placeholder: 'Squirrel', autofocus: true, class: 'title-field pull-left' %> <%= f.submit '', class: 'btn home-add without-entry' %> <% end %>
创建动作
def create @new_note = current_user.notes.build(new_note_params) if @new_note.save @notes_list = current_user.notes.count unless @new_note.user.any_entry @new_note.user.toggle!(:any_entry) if @notes_list >= 50 redirect_to root_url end else redirect_to root_url end end
最后我认为我想改变
<p class="instructions count-instruction text-center"> <%= @words.count %> </p>
花了很多时间用AJAX进行更新,但每次都失败。有什么需要帮助的吗?提前致谢。
您的代码不错,但是对于 ajax来说 ,
remote=true
<%= form_for(@image,:html=>{:id=>"your_form_id",:multipart => true,:remote=>true}) do |f |%>
views/users/show_updated_view.js.erb
users_controller
因此,在您的操作中,您需要执行以下操作:
respond_to do |format| format.js { render 'users/show_updated_view'} end
show_updated_view.js.erb
//这里我用div替换了整个表格
$("#your_form_id").html("<div><p>You have submitted the form successfully.</p></div>");
$("#your_form_id").html("<div><p>You have submitted the form successfully.</p></div>")
视图的名称可以是任何名称,但是您需要兼顾成功和失败。