我正在开发一个简单的 youtube 列表应用程序,用户可以在其中将视频添加到列表中。我正在验证 video_id 字段的存在。
class Track < ActiveRecord::Base
attr_accessible :title, :thumbnail_url, :video_id
validates :video_id, :presence => true
end
我在我的控制器中定义了以下创建函数:
def create
#fetches the video info, stores it in @trackinfo
if is_url(params[:track][:query])
@trackinfo = getTrackInfo(params[:track][:query])
else
@trackinfo = youTubeQuery(params[:track][:query])
end
#use @trackinfo to create track object
@track = Track.new(@trackinfo)
@tracks = Track.all
@video_ids = Track.pluck(:video_id)
if @track.save
else
render :action=>"index"
end
结尾
在我的 index.erb.html 我有以下块:
<%= render partial: "error_message" %>
相应的 _error_message.erb.html 仅包含来自验证的错误消息:
<% if @track.errors.any? %>
<% @track.errors.full_messages.each do |msg| %>
<%= msg %><br>
<% end %>
<% end %>
问题是当验证失败时,我无法从渲染视图中看到错误消息。我在它进入渲染索引之前记录了这些消息,并且能够看到这些消息:
从控制器:
if @track.save
else
puts "#{@track.errors.full_messages}" #i am able to see this
render :action=>"index"
end
我不知道在渲染期间发生了什么导致错误消息不显示,在服务器日志上确实说 _error_messages.erb.html 已被渲染,但我只是没有看到页面发生任何事情。我觉得我错过了一些非常明显的东西。有谁知道我应该怎么做?
谢谢