我正在尝试学习如何制作自定义模态窗口,但我收到错误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]}.
答案 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
remote: true
所以在quick_view.js.erb
我们通过jQuery方法partial
将body
附加到append
中,我们使用j render
或j
用于escape_javascript
&#34 ;转义回车以及JavaScript段的单引号和双引号&#34; (引自Rails文档)