rails:从另一个视图页面创建模态弹出窗口

时间:2015-12-25 22:45:01

标签: jquery ruby-on-rails ajax ruby-on-rails-4

我有一个仪表板页面,我正在显示一些图像和名称:

视图/仪表板/ index.html.haml

- @items.each do |item|
  = link_to item do
    = image_tag item.images.try(:first).try(:url,:medium)
    = item.name

然后我有这个单独的页面:

视图/项目/ _quick_view.html.haml

我想根据仪表板页面上的点击显示正确的内容。我想把它变成一个模态窗口,所以当有人点击某个项目时,它会在这个快速查看页面中有更多信息。不确定这是否是正确的方法呢?此外,我如何将信息传递到快速查看页面,以便知道要显示哪些正确的内容?

我是否添加了这样的渲染?

- @items.each do |item|
  = link_to item do
    = image_tag item.images.try(:first).try(:url,:medium)
    = item.name
  .modal{style: 'display:none;'}
    = render '/items/quick_view.html.haml', :item => item

我不知道这是怎么回事。需要一些指导。

1 个答案:

答案 0 :(得分:0)

如果您确实喜欢建议,则需要将每个项目链接与相关模式相关联。与link_to item一样,必须生成类似<a href='#modal1'>...</a>的内容,并且对于每个项目,它都会使用适当的ID呈现模式(&#39;#modal1&#39;,&#39;#modal2&#39; )。它是可能的,但如果你的页面变大,那么html会很多(每个项目一个模态)。

另一种解决方案是动态加载并且只有一个模态(#detail_view),对项目的任何点击都会对某些路由和控制器操作进行AJAX调用,这些操作将响应远程呼叫应答内容模态。将此内容注入您的#detail_view&#39;模态的。

为了实现第二个解决方案,我建议看看another SO Q/A。它是show视图的解决方案,但您可以执行类似的操作,为detail_view操作创建路径并返回@item对象。它在那里得到了很好的解释。