通过Rails中的控制器传递模型错误

时间:2013-02-06 11:20:10

标签: ruby-on-rails ruby model-view-controller model

我有两个模型 - 项目和评论。项目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消息。

1 个答案:

答案 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 %>