Rails:通过远程链接将变量传递给partial

时间:2015-12-14 05:05:58

标签: jquery ruby-on-rails

我希望实现一个裸图像库,因为我向用户显示缩略图列表,如果他点击其中一个,则部分正常版本应该刷新页面上的容器。

截至目前,我只能使用另一张图片来处理解决方案,因为我可以使用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 %>之类的东西,但它没有用。

1 个答案:

答案 0 :(得分:1)

<td><%= link_to image_tag(i.image_url(:preview)), gallery_path(@gallery.id, image_id: image.id) , :remote => true %></td>

当您在浏览器上尝试检查元素时,这仅显示图像ID。我认为这不是什么大不了的事。