【问题标题】:rails: creating modal pop up window from another view pagerails:从另一个视图页面创建模式弹出窗口
【发布时间】:2015-12-25 22:45:00
【问题描述】:

我有一个仪表板页面,其中显示了一些图像和名称:

views/dashboard/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

我不知道这将如何工作。请在这方面需要一些指导。

【问题讨论】:

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


    【解决方案1】:

    如果您确实喜欢您的建议,则有必要将每个项目链接与相关的模态链接。就像link_to item 必须生成类似<a href='#modal1'>...</a> 的东西,并且对于每个项目,它都会呈现一个具有适当ID('#modal1','#modal2')的模态。这是可能的,但如果您的页面变大,将会有很多(每个项目一个模式)html。

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

    要实施第二种解决方案,我建议查看another SO Q/A。这是显示视图的解决方案,但您可以使用类似的操作为 detail_view 操作创建路由并返回 @item 对象。那里解释得很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 2012-02-09
      • 2016-09-12
      • 2011-12-25
      相关资源
      最近更新 更多