因此,在我的应用程序中,用户可以使用the best in place gem更改其个人资料中的用户名,但是在text_field中更改用户名时,不会在current_user.username字段中更新用户名,直到我刷新为止。
以下是当前设置的相关代码:
<div class="users_about_fullinfo">
<h3><%= current_user.name %> <small>(<%= current_user.username %>)</small></h3>
<p class="edit-about-text">
<%= best_in_place current_user, :username, activator: ".edit-username", nil: 'Click here to edit your username', inner_class: 'form-control', ok_button: 'Save', ok_button_class: 'btn btn-default btn-xs creat-event blurb-ok', cancel_button: 'Cancel', cancel_button_class: 'btn btn-default btn-xs cencel-event blurb-cancel' %>
<span class="edit-icon edit-username"></span>
</p>
</div>
<div class="clr"></div>
理想情况下,我希望它能够工作,以便当用户更新他/她的用户名时,current_user.username字段也会在现场更新,而无需刷新。我怎么能这样做?
干杯!
答案 0 :(得分:0)
我从未使用过best_in_place gem,但它似乎提供了一种方法来定义自己在成功编辑时发生的操作:
https://github.com/bernat/best_in_place#ajax-success-callback
要解决您的问题,您应该在要更改的字段中包含用户名,以便您可以从javascript访问它:
<%= best_in_place @user, :name, :data => {:user_name => @user.name}, :classes => 'username-field' %>
然后为成功回调添加一个javascript处理程序:
$('.username-field').bind("ajax:success", function(){
$('.username-in-the-header').text($(this).data('userName'));
});