我有两个模型 - 项目和评论。项目has_many评论和评论belongs_to项目。当我打开项目(显示 REST动作)时,我可以为它添加评论。但是从表单接受数据并保存它的控制器在项目上是不同的(在ProjectsController中显示动作,在ReviewController中创建Review的动作)。
问题是我不明白Review模型的渲染错误。如果我有一个控制器,我会这样做:
if @project.save
respond_to do |format|
format.js
format.html {redirect_to :back, :notice => I18n.t("activerecord.attributes.project.added")}
end
else
render :action => :show
end
rails会在每个表单字段下呈现错误消息。不接受Flash消息。
答案 0 :(得分:1)
在评论控制器中,尝试以下
def create
@project = Project.find... # fetch the project
@review = @project.reviews.build params[:review]
@review.save
render template: 'projects/show'
end
在项目页面中,检查@review
以及是否有错误
# app/views/projects/show.html.erb
<% if @review && @review.errors.any? %>
...
<% end %>