如何使用 rails gem 'best_in_place' 编辑点击按钮的数据?
How to edit data onclick button using rails gem 'best_in_place'?
我正在使用 rails gem 'best_in_place'
和数据逐一编辑,如单击特定字段。
如何激活可编辑的 onclick update/edit 按钮的所有字段?
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 %>
现在刷新您的页面,您将在 table 行中看到用户记录。
添加新的部分 _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文件来更新用户记录后的table行
$("#record-row-<%= @user.id %>").html("<%= escape_javascript(render partial: 'user', locals: { user: @user } ) %>")
一切就绪。刷新您的页面并单击一行的编辑按钮。将出现一个表格。更改值并单击“更新”按钮。您将看到更新后的记录。
如果您有任何问题,请告诉我。乐于助人。
我正在使用 rails gem 'best_in_place'
和数据逐一编辑,如单击特定字段。
如何激活可编辑的 onclick update/edit 按钮的所有字段?
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 %>
现在刷新您的页面,您将在 table 行中看到用户记录。
添加新的部分 _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文件来更新用户记录后的table行
$("#record-row-<%= @user.id %>").html("<%= escape_javascript(render partial: 'user', locals: { user: @user } ) %>")
一切就绪。刷新您的页面并单击一行的编辑按钮。将出现一个表格。更改值并单击“更新”按钮。您将看到更新后的记录。
如果您有任何问题,请告诉我。乐于助人。