我希望实现一个裸图像库,因为我向用户显示缩略图列表,如果他点击其中一个,则部分正常版本应该刷新页面上的容器。
截至目前,我只能使用另一张图片来处理解决方案,因为我可以使用partial中的明确image.last
元素来访问其值。
我读了很多关于如何将变量传递给partials的内容,特别是在这个网站上。我试过当地人 - 没有运气。我读到可能有params.merge()
的解决方案,但它很容易受到xss的攻击。我至少试图在我的开发环境中找到params.merge的解决方案,但失败了。
这是我的实际解决方案。在我使用的show
视图中:
<div class="row">
<div class="col s12" id="ngGallery">
<h2 class="game-subheading"><%= @gallery.images.first.title %></h2>
<img src="<%= @gallery.images.first.image %>" class="responsive-img">
<p><%= @gallery.images.first.desc %></p>
</div>
</div>
<table>
<tr>
<% @gallery.images.each do |i| %>
<td><%= link_to image_tag(i.image_url(:preview)), @gallery, :remote => true %></td>
<% end %>
</tr>
</table>
该表显示可点击的缩略图,它具有响应性,因为它在小视口上提供水平滚动。上面的#ngGallery
容器是我想要更改的容器。
控制器中的show
方法确保它通过部分响应js。
def show
respond_to do |format|
format.html
format.js
end
end
show.js.erb
包含:
$('#ngGallery').html("<%= escape_javascript(render :partial => 'ngGallery') %>");
在该文件中,我尝试了:locals=>{:picture=>"#{i.id}"}
等本地人,但是当我想在ngGallery
中使用它们时,我没有运气。服务器在浏览器中响应500内部错误。
部分本身包含:
<h2 class="game-subheading"><%= @gallery.images.last.title %></h2>
<img src="<%= @gallery.images.last.image %>" class="responsive-img">
<p><%= @gallery.images.last.title %></p>
正如我所说。这种方式适用于用户的“一次”点击,但我想迭代整个画廊,其中包含单独的图像文件。图库有许多图像,图像属于图库。这是我的协会。
使用本地方法,我尝试使用像<%= @gallery.images.find_by(id: :picture).title %>
之类的东西,但它没有用。
答案 0 :(得分:1)
<td><%= link_to image_tag(i.image_url(:preview)), gallery_path(@gallery.id, image_id: image.id) , :remote => true %></td>
当您在浏览器上尝试检查元素时,这仅显示图像ID。我认为这不是什么大不了的事。