Rails 4: Submit button not responsive after its been reloaded by Ajax -
i have partial in user show page
<div id = "aboutmejs"> <%= render "about_me" %> </div> the _about_me.html.erb partial is:
<% unless @user.about.blank? %> <div class = "headerrow"> <span class="glyphicon glyphicon-user aboutme" aria-hidden="true"> </span> <div class = "header">about <%= about_me_variable %> <% if current_user == @user %> <a class = "profileedit" id = "aboutmeedit">edit</a> <% end %></div> <div class = "aboutme"><%= @user.about.html_safe %></div> <%= render 'about_me_change' %> </div> <%end %> this contains partial: _about_me_change.html.erb (not sure if idea - new rails):
<div id = "aboutmeform"> <div class = "usereditsjs"> <%= simple_form_for(@user, html: { multipart: true }, remote: true) |f| %> <%= f.text_area :about, class: 'form-control', :id => "edit" %> </div> <%= f.submit "update", class: "btn btn-success aboutmeupdatebutton", id: "thirdupdate" %> <% end %> </div> finally my: about_me.js.erb
$('#aboutmejs').html("<%= escape_javascript(render('about_me')) %>") the user_controller update action allows updates via ajax
def update respond_to |format| if @user.save flash.now[:success] = "profile updated" format.html { redirect_to @user } format.js { render 'about_me'} else flash.now[:danger] = "there problem update" format.html { redirect_to user_path(@user) } format.js end end end end this works fine once. if try update - submit button, reloaded after first update unresponsive. have seen other questions similar in setting of php , when submit button handled jquery (use "on" instead of "click") not in rails setting.
why button not submitting second time?
perhaps reason in wrong html. about_me_change partial may this:
<div id="aboutmeform"> <div class="usereditsjs"> <%= simple_form_for(@user, remote: true) |f| %> <%= f.field :about, as: :text %> <%= f.button :submit %> <% end %> </div> </div> pay attention simple_form_for method receives block inserted <form> tag. have open , close <div> on same nesting level.
after first update, javascript replace part of form includes leader <form> , not include </form>.
p.s. multipart: true automatically added when it's needed.
p.p.s. use simple_form gem may use f.field instead of f.text_field method, , f.button :submit instead of f.submit. see documentation details
Comments
Post a Comment