Ruby on Rails ajax模态窗口返回500状态代码

时间:2015-12-26 06:15:17

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

我正在尝试学习如何制作自定义模态窗口,但我收到错误500状态代码。

我认为这有: views / dashboard / index.html.haml

.container
  - @trips.each do |trip|
    = link_to trip.id, quick_view_trips_path, remote: true
  .quick-view{style: "display:none;"}
    = render "trips/quick_view"

我不确定quick_view_trips_path是否正确。我试图在模态窗口中显示行程的内容。

另外,我有这些:

视图/车次/ quick_view.js.erb

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

视图/车次/ _quick_view.html.haml

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

的routes.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

编辑:控制台错误

哦,我刚刚意识到,如果我点击控制台中的http://localhost:3000/trips/quick_view链接,我就能看到错误:

它说ActionView::MissingTemplate at /trips/quick_view

Missing partial views/trips/_quick_view with {:locale=>[:en], :formats=>[:js, :html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :haml, :jbuilder]}.

1 个答案:

答案 0 :(得分:1)

您只能在render partial:而不是render

视图的情况下尝试使用_quick_view.html.haml quick_view.html.haml
.container
  - @trips.each do |trip|
    = link_to trip.id, quick_view_trips_path, remote: true
  .quick-view{style: "display:none;"}
    = render partial: "trips/quick_view"

并且在js中不需要views作为

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

如果你想获取特定模态的内容并像这里一样替换它,每次点击都会将每次旅行快速视图附加到身体上每次点击链接remote: true它将调用控制器方法和这将作为js的格式进行响应,因此它将调用quick_view.js.erb并通过获取部分来附加行程。

所以这里

link_to trip.id, quick_view_trips_path, remote: true

会在trips/quick_view.js.erb

告诉ajax请求回复时调用remote: true

所以在quick_view.js.erb

我们通过jQuery方法partialbody附加到append中,我们使用j renderj用于escape_javascript&#34 ;转义回车以及JavaScript段的单引号和双引号&#34; (引自Rails文档)