我正在使用railsgem 'best_in_place'
和数据编辑,如点击的属性字段。如何激活可编辑onclick更新/编辑按钮的所有字段?
def update
if m_user[:name].present?
MUser.where(:id => id).update(:name => m_user[:name])
elsif m_user[:gender].present?
MUser.where(:id => id).update(:gender => m_user[:gender])
else
flash[:danger] = 'not updated'
end
end
查看代码:
<% @user.each do |record| %>
<tr>
<td>
<%= best_in_place record, :name, :as => :input %>
</td>
<td>
<%= best_in_place record, :gender, :as => :select, collection: (MUser.pluck(:id,:gender)) %>
</td>
<%= best_in_place record, :dob, :as => :date, class: 'datepicker1 %>
</td>
</tr>
<% end %>
<%= submit_tag('update',:name => 'update_data', class: 'btn btn-primary btn-sm', :id => 'update_btn') %>
现在数据编辑,就像我编辑name
一样,它将自动编辑,但是当我单击update/edit
按钮,然后使所有字段处于活动状态以进行编辑时,我如何进行编辑。
正如我们所讨论的,您需要对进行一些更改
-
添加_user.html.erb部分以使用以下代码呈现记录。
<td> <%= user.name %> </td> <td> <%= user.gender %> </td> <td> <%= user.dob %> </td> <td> <%= link_to "Edit", edit_user_path(user), remote: true %> <td>
-
现在更改index.html.erb代码,如下所示。
<% @users.each do |user| %> <tr id="record-row-<%= user.id %>"> <%= render prtial: 'user', locals: { user: user } %> </tr> <% end %>
现在刷新您的页面,您将在表行中看到用户记录。
-
添加一个新的部分_user_form.html.erb来呈现表单,并在其中添加以下代码。
<td colspan="4"> <%= form_for(@user, remote: true) do |f| <table> <tbody> <tr> <td><%= f.text_field :name, class: 'form-control' %></td> <td><%= f.select :gender, MUser.pluck(:gender, :id).uniq, { selected: @user.gender }, class: 'form-control' %></td> <td><%= f.text_field :name, class: 'form-control datepicker1' %></td> <td><%= f.submit "Update" %></td> </tr> </tbody> </table> <% end %> </td>
-
现在需要更新
edit
和update
操作。编辑动作
def edit @user = User.find(params[:id]) respond_to do |format| format.js { } format.html { render 'edit' } end end
更新操作
def update @user = User.find(params[:id]) respond_to do |format| if @user.update_attributes(user_params) format.js { } format.html { redirect_to @user, notice: 'User was updated successfully.' } else format.js { } format.html { render 'edit' } end end end private def user_params params.require(:user).permit(:name, :gender, :dob) end
-
现在,您需要创建一个edit.js.erb文件来在所选行上呈现表单。
$("#record-row-<%= @user.id %>").html("<%= escape_javascript(render 'user_form') %>")
-
在更新用户记录后,您还需要一个update.js.erb文件来更新表行。
$("#record-row-<%= @user.id %>").html("<%= escape_javascript(render partial: 'user', locals: { user: @user } ) %>")
现在一切就绪。刷新页面并单击行的"编辑"按钮。将出现一个表单。更改值并单击"更新"按钮。您将看到更新后的记录。
如果你有任何问题,请告诉我。很乐意帮忙。