从标准创建页面之外的表单更新模型 - 如果表单为空,则会创建页面

问题描述:

我已向主页添加了一个表单,该表单为模型links创建了一个新实例。这很好,除非您将表单字段留空并点击提交,它会将您转到模型的新页面。从标准创建页面之外的表单更新模型 - 如果表单为空,则会创建页面

我真正想要的是它做相同的验证检查,并告诉用户该字段不能为空。我不知道为什么它的转发,而不是提出验证错误 - 我假定它与我从典型模型脚手架之外的窗体创建实例有关。

这里是表单代码:

 <%= form_for(@link, :html => {:class => "form-inline"}) do |f| %> 
      <% if @link.errors.any? %> 
      <div id="error_explanation"> 
       <h2><%= pluralize(@link.errors.count, "error") %> prohibited this link from being saved:</h2> 

       <ul> 
       <% @link.errors.full_messages.each do |msg| %> 
       <li><%= msg %></li> 
       <% end %> 
       </ul> 
      </div> 
      <% end %> 

      <div class="urlform"> 
       <label>Enter link...</label> 
       <%= f.text_field :url, :class => "input-medium", :placeholder => "mybookmark.com" %> 
       <%= f.submit "Create", :class => "btn create" %> 
      </div> 
      <% end %> 
+0

你可以编辑添加你的控制器代码吗?这就是造成这种情况的原因。 – RobHeaton 2013-05-11 16:23:38

的LinksController应该定义后,模型的创建失败,要呈现的页面。你应该有现在类似于:

class LinksController < ApplicationController 
    ... 
    def create 
    @link = Link.new(params[:link]) 
    if @link.save 
     ... 
    else 
     render :new 
    end 
    end 
... 
end 

如果更改render newredirect_to root_path比如你会得到预期的效果。