如何在我的案例中显示 bootstrap 模态?
How do I display a bootstrap modal in my case?
我正在使用 bootstrap 并且我有一个 link 从 home#index
重定向到 images#show
操作。 link 是用 haml 写的:
- url = @entry.class.to_s.downcase.singularize
= link_to(send("#{url}_path", @entry), data: { 'type' => @entry.class.to_s.downcase }) do
= yield
所以目前,home#index
显示图像列表,当单击图像时,上面写的 link 将用户重定向到特定图像的视图 例如:images/1
.也就是说 @entry
代表图像,当点击时重定向到特定图像或 (@entry
).
我不想离开主页 (home#index
),我只想显示一个模态视图,它会考虑单击了哪些图像(或 @entry
)。我如何修改此 link 并添加代码以在单击上面的 link 时显示 bootstrap 模式?我应该遵循哪些其他步骤?我只需要帮助来显示模态。
这是我的踪迹:
Started GET "/images/3" for ::1 at 2016-09-07 22:28:10 -0400
Processing by ImagesController#show as */*
Parameters: {"id"=>"3"}
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Image Load (0.3ms) SELECT "images".* FROM "images" WHERE "images"."id" = LIMIT 1 [["id", 3]]
Group Load (0.4ms) SELECT DISTINCT "groups".* FROM "groups" INNER JOIN "group_memberships" ON "groups"."id" = "group_memberships"."group_id" WHERE "group_memberships"."member_id" = AND "group_memberships"."member_type" = AND "group_memberships"."group_type" = [["member_id", 1], ["member_type", "User"], ["group_type", "Group"]]
GroupMembership Load (0.4ms) SELECT "group_memberships".* FROM "group_memberships" WHERE "group_memberships"."member_id" = AND "group_memberships"."member_type" = [["member_id", 3], ["member_type", "Image"]]
GroupMembership Load (0.5ms) SELECT "group_memberships".* FROM "group_memberships" WHERE "group_memberships"."group_type" = AND "group_memberships"."member_type" = AND "group_memberships"."member_id" = AND "group_memberships"."group_id" IN (-1, -1) [["group_type", "Group"], ["member_type", "User"], ["member_id", 1]]
Rendered images/_modal.html.erb (0.0ms)
Rendered images/show.js.erb (1.2ms)
Completed 200 OK in 27ms (Views: 10.0ms | ActiveRecord: 1.9ms)
一种选择是使用 js
模板并将您的链接更改为使用 remote: true
选项:
<%- @images.each do |image| -%>
<%= link_to '...', image_path(image) remote: true %>
<%- end -%>
<div id="modals"></div>
接下来在控制器中可以将响应类型设置为 js
(同时保留 html
选项可能是个好主意):
respond_to do |format|
format.js
end
然后在处理 js
的模板中:
// app/views/images/show.js.erb
$("#modals").html('<%= j render "images/modal", image: @image %>');
$('#modals .modal').modal();
$('#modals .modal').modal('.toggle');
最后为模态添加部分内容并设置所需的任何标记:
<!-- app/views/images/_modal.html.erb -->
<div class="modal fade">
...
<%= image_tag(image.url, class: "img-responsive") %>
...
</div>
我正在使用 bootstrap 并且我有一个 link 从 home#index
重定向到 images#show
操作。 link 是用 haml 写的:
- url = @entry.class.to_s.downcase.singularize
= link_to(send("#{url}_path", @entry), data: { 'type' => @entry.class.to_s.downcase }) do
= yield
所以目前,home#index
显示图像列表,当单击图像时,上面写的 link 将用户重定向到特定图像的视图 例如:images/1
.也就是说 @entry
代表图像,当点击时重定向到特定图像或 (@entry
).
我不想离开主页 (home#index
),我只想显示一个模态视图,它会考虑单击了哪些图像(或 @entry
)。我如何修改此 link 并添加代码以在单击上面的 link 时显示 bootstrap 模式?我应该遵循哪些其他步骤?我只需要帮助来显示模态。
这是我的踪迹:
Started GET "/images/3" for ::1 at 2016-09-07 22:28:10 -0400
Processing by ImagesController#show as */*
Parameters: {"id"=>"3"}
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Image Load (0.3ms) SELECT "images".* FROM "images" WHERE "images"."id" = LIMIT 1 [["id", 3]]
Group Load (0.4ms) SELECT DISTINCT "groups".* FROM "groups" INNER JOIN "group_memberships" ON "groups"."id" = "group_memberships"."group_id" WHERE "group_memberships"."member_id" = AND "group_memberships"."member_type" = AND "group_memberships"."group_type" = [["member_id", 1], ["member_type", "User"], ["group_type", "Group"]]
GroupMembership Load (0.4ms) SELECT "group_memberships".* FROM "group_memberships" WHERE "group_memberships"."member_id" = AND "group_memberships"."member_type" = [["member_id", 3], ["member_type", "Image"]]
GroupMembership Load (0.5ms) SELECT "group_memberships".* FROM "group_memberships" WHERE "group_memberships"."group_type" = AND "group_memberships"."member_type" = AND "group_memberships"."member_id" = AND "group_memberships"."group_id" IN (-1, -1) [["group_type", "Group"], ["member_type", "User"], ["member_id", 1]]
Rendered images/_modal.html.erb (0.0ms)
Rendered images/show.js.erb (1.2ms)
Completed 200 OK in 27ms (Views: 10.0ms | ActiveRecord: 1.9ms)
一种选择是使用 js
模板并将您的链接更改为使用 remote: true
选项:
<%- @images.each do |image| -%>
<%= link_to '...', image_path(image) remote: true %>
<%- end -%>
<div id="modals"></div>
接下来在控制器中可以将响应类型设置为 js
(同时保留 html
选项可能是个好主意):
respond_to do |format|
format.js
end
然后在处理 js
的模板中:
// app/views/images/show.js.erb
$("#modals").html('<%= j render "images/modal", image: @image %>');
$('#modals .modal').modal();
$('#modals .modal').modal('.toggle');
最后为模态添加部分内容并设置所需的任何标记:
<!-- app/views/images/_modal.html.erb -->
<div class="modal fade">
...
<%= image_tag(image.url, class: "img-responsive") %>
...
</div>