从标准创建页面之外的表单更新模型 - 如果表单为空,则会创建页面
问题描述:
我已向主页添加了一个表单,该表单为模型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 %>
答
的LinksController应该定义后,模型的创建失败,要呈现的页面。你应该有现在类似于:
class LinksController < ApplicationController
...
def create
@link = Link.new(params[:link])
if @link.save
...
else
render :new
end
end
...
end
如果更改render new
为redirect_to root_path
比如你会得到预期的效果。
你可以编辑添加你的控制器代码吗?这就是造成这种情况的原因。 – RobHeaton 2013-05-11 16:23:38