控制器操作
def board
@ids = params[:ids] if params[:ids]
respond_to do |format|
format.js do
render :edit_modal
end
end
end
edit_modal.js.erb
$("#editModal .js-modal-body").html(
"<%= j render "edit_board.html.erb" %>"
);
$('#editModal').modal('show');
edit_board.html.erb
<%= simple_form_for :order_fulfillment,
url: update_multiple_path,
method: :patch,
remote: true do |f| %>
<%= f.hidden_field :edit_ids, value: @ids %>
<% end %>
出于某种奇怪的原因,我的表单在隐藏字段中没有任何值。但是,当我这样做binding.pry
时:
def board
@ids = params[:ids] if params[:ids]
binding.pry
respond_to do |format|
format.js do
render :edit_modal
end
end
end
表单似乎填充了@ids的值。 binding.pry
在该执行线上暂停程序。我无法理解为什么这适用于binding.pry
?是因为@ids在呈现edit_modal.js.erb
时没有任何值吗?如果是这样的话,为什么会这样,以及如何在@ids
内填充edit_board.html.erb
。
答案 0 :(得分:1)
将.js文件重命名为您不需要明确呈现它们的操作名称
def board
@ids = params[:ids] if params[:ids]
binding.pry
respond_to do |format|
format.js
end
end
重命名edit_modal.js.erb
=&gt; board.js.erb
它会起作用
答案 1 :(得分:0)
尝试在此处更改多个代码
<强>控制器强>
要在rails中使用ajax,只需添加format.js
def board
@ids = params[:ids] if params[:ids]
respond_to do |format|
format.js
end
end
然后,将edit_modal.js.erb
重命名为board.js.erb
,因为您必须使用与您的方法相同的文件。在board.js.erb
内,您必须更改为
$("#editModal .js-modal-body").html(
"<%= j render "edit_board" %>"
);
$('#editModal').modal('show');
$('#order_edit_ids').value("<%= @ids %>");
最后。重命名edit_board.html.erb
以使用下划线_edit_board.html.erb
我希望这对你有所帮助。