呈现部分视图时 Ajax 中的动态内容

dynamic content in ajax while rendering partial views

提问人:hellomello 提问时间:12/26/2015 更新时间:12/26/2015 访问量:749

问:

当用户点击不同的链接时,如何获取动态内容?

视图/仪表板/索引.html.haml

.container
  - @trips.each do |trip|
    = link_to trip.id, quick_view_trips_path, remote: true

我很确定这是不正确的,因为所有链接都是这样的:quick_view_trips_path

<a href="/trips/quick_view">1</a>
<a href="/trips/quick_view">13</a>
<a href="/trips/quick_view">51</a>

不知何故,我需要使这些链接动态化,然后当用户单击它时,模式窗口也将是动态的。

如果我只用quick_view_trips_pathtrip

= link_to trip.id, trip, remote: true

什么也没发生,url 更改为正确的 url,但我的模式窗口没有通过 ajax 呈现。下面是 url 现在的样子示例:

<a href="/trips/slug-title-url-correct">1</a>

除了我试图通过动态内容完成的任务之外,有没有办法像这样更改我的网址:

<a href="/trips/slug-title-url-correct?quick_view=on">1</a>

是否可以将附加到 URL 的末尾并使一切再次工作??quick_view=on

以下是我的其余代码:

浏览量/trips/quick_view.js.erb

$('body').append('<%= j render partial: "trips/quick_view" %>');

views/trips/_quick_view.html.haml

.root-container
  = @trip.title
  = @trip.image
  = @trip.more_details

这现在也不起作用,因为我的应用程序返回了undefined method

routes.rb (路由.rb)

resources :trips do
  collection do
    get 'quick_view'
  end
end

trips_controller.rb

def quick_view
  respond_to do |format|
    format.html # quick_view.html.erb
    format.js # quick_view.js.erb
    format.json { render json: @trip }
  end
end

我是否还需要向此控制器添加任何内容,以确保通过部分生成正确的内容?

Ruby-on-Rails ajax Ruby-on-Rails-4 部分视图 不显眼的 javascript

评论


答:

1赞 Jaehyun Shin 12/26/2015 #1

这样怎么样,

  1. 路径

    link_to trip.id, quick_view_trips_path(:js, trip_id: trip.id), remote: true
    

    这将呈现,<a href="/trips/quick_view.js?trip_id=1">1</a>

  2. 控制器

    def quick_view
      @trip = Trip.find(params[:trip_id])
      respond_to do |format|
        format.html # quick_view.html.erb
        format.js # quick_view.js.erb
        format.json { render json: @trip }
      end
    end
    

    它将响应文件views/trips/quick_view.js.erb