ruby-on-rails 为什么我的Rails简单验证不起作用

wi3ka0sx  于 2022-11-19  发布在  Ruby
关注(0)|答案(2)|浏览(111)

我有一个非常基本的Rails应用程序。我正在尝试验证。
主计长

class PagesController < ApplicationController
  def new
    @user = User.new
  end
  def edit
    @user = User.new(:state => params[:state], :country => params[:country])
    @user.save
  end
end

型号

class User < ActiveRecord::Base
    validates_presence_of :country
    validates_presence_of :state
end

浏览次数/页面/edit

<% form_for :user, @user, :url => { :action => "edit" } do |f| %>
  <%= f.text_field :country %>
  <%= f.text_field :state %>
  <%= submit_tag 'Create' %>
<% end %>

我想做的就是在我还没有输入任何内容的时候点击Create,然后出现一个验证并列出必填字段。我读过一些教程,它们使它变得如此简单。为什么我不能让它工作?我做错了什么?当我创建一个scaffold时,它工作正常,但是在public/stylesheets中生成一个scaffold.css。现在我在public文件夹中没有样式表。

bkhjykvo

bkhjykvo1#

您正在将表单发送到“edit”操作,该操作不执行任何处理。您需要它转到“create”操作,该操作应如下所示:

def create
  @user = User.new(params[:user])

  if @user.save
    flash[:notice] = 'Your user was successfully created.'
    redirect_to users_path
  else
    render :action => 'edit'
  end
end

form_for行可以很简短,而且需要调用error_messages来获取自动生成的错误列表:

<% form_for @user do |f| %>
  <%= f.error_messages %>
  ...other fields go here...
<% end %>
ygya80vv

ygya80vv2#

请参阅Rails conditional validation: if: doesn't working
看起来你认为验证......如果:它的工作方式与实际情况不同。这条线

validates :to_id, presence: true, if: :from_different_to?

如果from_different_to方法返回true,则转换为验证to_id是否存在。如果from_different_to的计算结果为false,则不进行验证。

相关问题