【问题标题】:Updating model from form outside of standard create page - goes to create page if form is blank从标准创建页面之外的表单更新模型 - 如果表单为空白,则转到创建页面
【发布时间】:2013-05-11 15:28:23
【问题描述】:

我在我的主页上添加了一个表单,它为模型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 %>

【问题讨论】:

  • 您可以编辑以添加您的控制器代码吗?这就是造成这种情况的原因。

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


【解决方案1】:

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,您将获得所需的效果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    相关资源
    最近更新 更多