我有一个仪表板页面,我正在显示一些图像和名称:
视图/仪表板/ 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
我不知道这是怎么回事。需要一些指导。
答案 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对象。它在那里得到了很好的解释。