0

好吧,我必须错过一些简单的东西。

我正在使用部分“/shared/_error_messages.html.erb”来处理

<%= render 'shared/error_messages', object: f.object %>

在我的表格中(一个用于添加程序,一个用于添加指标)。

当我导航到任何表单(/programs/new 和 metrics/new)时,验证会在页面加载时出现。

programs_controller 和 metrics_controller 在结构上是相同的(在 metrics_controller 中将 @metrics 替换为 @programs):

#programs_controller.rb
def new
  @programs = Program.new(params[:name])
  if @programs.save
    flash[:success] = "Program saved"
    redirect_to "/program"
  else
    render 'new'
  end
end

有什么想法可能导致这种情况吗?

这是部分内容:

<% if object.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-error">
      The form contains <%= pluralize(object.errors.count, "error") %>.
    </div>
    <ul>
     <% object.errors.full_messages.each do |msg| %>
       <li>* <%= msg %></li>
     <% end %>
    </ul>
  </div>
<% end %>
4

1 回答 1

3

我不知道错误是什么,但问题是您正在将对象保存在new操作中。保存产生对象错误;这就是你看到它们的原因。

RESTful某种程度上,新操作应该只是实例化一个模型并将对象传递给您的表单。表单会将其提交给create操作;你应该在哪里保存你的对象并检查错误。
就像是:

#programs_controller.rb
def new
  @programs = Program.new
end

def create
  @programs = Program.new(params[:program])
  if @programs.save
    # success
  else
    # failure
  end
end
于 2012-12-21T00:54:32.487 回答