如何使用轨道 gem "best_in_place"编辑数据点击按钮?



我正在使用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按钮,然后使所有字段处于活动状态以进行编辑时,我如何进行编辑。

正如我们所讨论的,您需要对进行一些更改

  1. 添加_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>
    
  2. 现在更改index.html.erb代码,如下所示。

    <% @users.each do |user| %>
    <tr id="record-row-<%= user.id %>">
    <%= render prtial: 'user', locals: { user: user } %>
    </tr>
    <% end %>
    

    现在刷新您的页面,您将在表行中看到用户记录。

  3. 添加一个新的部分_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>
    
  4. 现在需要更新editupdate操作。

    编辑动作

    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
    
  5. 现在,您需要创建一个edit.js.erb文件来在所选行上呈现表单。

    $("#record-row-<%= @user.id %>").html("<%= escape_javascript(render 'user_form') %>")
    
  6. 在更新用户记录后,您还需要一个update.js.erb文件来更新表行。

    $("#record-row-<%= @user.id %>").html("<%= escape_javascript(render partial: 'user', locals: { user: @user } ) %>")
    

现在一切就绪。刷新页面并单击行的"编辑"按钮。将出现一个表单。更改值并单击"更新"按钮。您将看到更新后的记录。

如果你有任何问题,请告诉我。很乐意帮忙。

相关内容

  • 没有找到相关文章

最新更新