ruby-on-rails - 使用引导模式形式编辑对象(Ruby On Rails)
问题描述
我正在使用 AJAX 为组做一个模态表单,想法是我单击表中的编辑按钮来编辑该特定对象。当我单击编辑按钮时,它不显示模态表单
groups.html.erb
<table class="table table-striped table-bordered table-hover dataTables-example" >
<thead>
<tr>
<th>Name</th>
<th>Phone</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<% @groups.each do |g| %>
<tr class="gradeC">
<td><%= g.name%></td>
<td><%= g.phone%></td>
<td>
<div class="btn-group">
<%= link_to 'Edit', edit_group_path(g), {:remote => true, 'data-toggle' => "modal", 'data-target' => '#edit-group', class: 'btn-white'} %>
</div>
</td>
</tr>
</tbody>
<% end %>
</table>
<div id="edit-group" class="modal hide fade" aria-hidden="true">
<div class="modal-dialog modal-md">
<div class="modal-content">
<div class="modal-body">
<%= render partial: 'form' %>
</div>
</div>
</div>
_form.html.erb
<div id="edit">
<div class="row">
<div class="col-sm-12"><h3 class="m-t-none m-b">Edit group</h3>
</div>
</div>
<%= form_for @group, url: groups_path, remote: true do |f| %>
<div class="form-group row">
<div class="col-sm-6">
<label>Name</label>
<%= f.text_field :name, class:"form-control"%>
</div>
<div class="col-sm-5">
<label>Phone</label>
<%= f.text_field :phone, class:"form-control"%>
</div>
</div>
<%= f.submit "Submit", id:"submit", class: 'btn btn-primary btn-lg float-right'%>
</div>
<% end %>
</div>
</div>
</div>
</div>
_edit.js.erb
$('.modal-body').html("<%= escape_javascript( render partial: 'form', locals: {group: @group} ) %>")
$('#edit-group').modal()
_update.js.erb
$('#edit-group').modal('toggle');
$('#group_<%= @group.id %>').replaceWith('<%= j render (@group) %>')
组控制器。
class GroupsController < ApplicationController
def groups
@group = Group.new
@group = Group.all
end
def create
@group = Group.new(group_params)
if @group.save
flash[:success] = "Group successfully added"
redirect_to :groups => 'post', :action => 'groups'
else
flash[:error] = "Something went wrong"
render 'group'
end
end
def edit
@group = Group.find(params[:id])
format.js
end
def update
respond_to do |format|
format.html
format.js
if @group.update(group_params)
redirect_to :groups => 'post', :action => 'groups'
end
end
end
private
def group_params
params.require(:group).permit(:name, :phone)
end
end
我尝试在 javascript 文件中执行 console.logs 以确保它们至少正在尝试执行,但我在控制台中什么也没有,猜测它们由于某种原因没有执行,它们在我的视图文件夹中
解决方案
在您的 _edit.js.erb 中将最后一行修改为:
$('#edit-group').modal('show');
另外,单击编辑链接后您得到的响应是什么?在 shell 上查看正在运行的服务器,然后单击编辑链接。看看你得到的错误是什么。
我可以假设它应该是 edit.js.erb 而不是 _edit ...另外请确保您在 _edit.js.erb 中提供正确的部分位置路径
render partial: 'form'
推荐阅读
- ios - 如何快速创建弹跳效果?
- awk - 从每一列中删除重复的字符串
- java - 创建一个基本的 java Swing GUI
- sql-server - SQL Server 或 SQL 查询或两者都有问题
- python - Python根据键值对的字典制作项目列表,但值必须是正则表达式模式
- python - 为什么 NN 训练损失会变平?
- pandas - 如何解决此归因错误 AttributeError: 'DataFrame' object has no attribute 'as_matrix' (使用 Python 3.8)
- c# - 将原始 c# 程序输出重定向到 Xunit 输出
- css - BEM 样式类名称的嵌套深度指南
- angular - 它给了我一个错误 404 Not Found Angular