【问题标题】:Validating search form on rails在 Rails 上验证搜索表单
【发布时间】:2015-10-05 09:13:07
【问题描述】:

我在验证时遇到了一些问题。我正在尝试验证不属于数据库的 params[:search] 和 params[:miles]。到目前为止,我已经创建了一个无表模型,但仍然需要一些帮助来找出我的代码出了什么问题。感谢你们的帮助。

user_controller.rb

class UsersController < ApplicationController
  def index
    @search = Search.new(search: params[:search], miles: params[:miles])


    if params[:search] && params[:miles].present?
    @users = User.near(params[:search], params[:miles], units: :mi)
     elsif params[:search].present?
    @users = User.near(params[:search], 10, units: :mi)
    else
     @users = User.all
    end

index.html.erb

  <%= form_for @search, url: users_path, method: :get do |f| %>
    <% if @search.errors.any? %>
      <h2> Errors: </h2>
      <ul>
        <% @search.errors.full_messages do |message| %>
          <li><%= message %></li>
        <% end %>
      </ul>
    <% end %>
    <%= f.label :miles, params[:miles] %>
    <%= f.text_field :miles %>
    <%= f.label :search, params[:search] %>
    <%= f.text_field :search %> </br >
    <%= f.submit "Search" %>
  <% end %>

search.rb 模型

class Search
  include ActiveModel::Validations
  include ActiveModel::Conversion
  extend ActiveModel::Naming

  attr_accessor :search
  attr_accessor :miles

  validates_presence_of :search
  validates :miles, inclusion: { in: 0..9 }
end

【问题讨论】:

  • 你的代码哪里出错了?搜索错误是否未显示?您是否遇到某种错误?
  • 由于您没有提及您的错误,因此很难理解发生了什么。

标签: ruby-on-rails ruby validation ruby-on-rails-4


【解决方案1】:

所以用户进入索引页面,并填写搜索字段:searchmiles 然后单击Search 并到达索引控制器,其中创建了一个 搜索:@search = Search.new

在您的代码中没有任何地方搜索是“给定”用户填写的参数。

你不应该这样做:

@search = Search.new(search: params[:search], miles: params[:miles])

@search = Search.new
@search.search = params[:search]
@search.miles = params[:miles]

然后要开始验证,您需要以某种方式“激活”它们,例如应该触发验证过程的@search.valid?

【讨论】:

  • 你是对的,但我现在收到此错误 - 参数数量错误(1 代表 0)
  • 更新了我的答案,当你遇到错误时,请说明错误发生在哪个元素上,我假设它发生在 Search.new
  • 感谢解决了我现在需要进行验证部分的错误问题
  • 如果您认为您的问题已得到解答,请将答案标记为正确,否则请详细说明您的问题仍未得到解答的原因。
  • 我还在做验证部分,以后可能有问题要问你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-11
  • 1970-01-01
相关资源
最近更新 更多