ruby-on-rails - Ruby on Rails - 检查提交的表单数据是否与数据库数据匹配

标签 ruby-on-rails ruby ruby-on-rails-3

我有一个表单,用户(“成员”)在其中提交 4 位 PIN,然后将其保存到名为 :subscribed_pin 的 session 变量中。由于某种原因,快速的 if/else 语句无法正常工作,我认为这是我的一个愚蠢的错误,但如果您愿意看一下,我将非常感激!

查看

<%= form_for :member_pin, :url => { :action => "verify_pin", :id => member.id } do |f| %>`
  <%= f.label :pin %>
  <%= f.text_field :pin %>
<%= f.submit 'Submit' %>

Controller

过滤前

before_filter :validate_pin, :only => :show

操作(POST 路由)

def verify_pin
  @member = Member.find(params[:id])

  session[:submitted_pin] = params[:member_pin][:pin]
  redirect_to @member
end

过滤

def validate_pin
  @member = Member.find(params[:id])
  @member_pin = @member.pin

  if session[:submitted_pin] == @member_pin
    render @member
  else
    redirect_to '/'
  end
end

无论如何,所有这一切的结果都是重定向到我的 root_url,即使输入的 Pin 图确实与该用户数据库中的 Pin 图匹配。帮助!谢谢:)

最佳答案

根据我们在评论中讨论的加薪结果,听起来似乎存在类别不匹配。最简单的修复方法(恕我直言,最容易阅读)是调整验证器代码,如下所示:

if session[:submitted_pin].to_i == @member_pin.to_i
  render @member
else
  redirect_to '/'
end

如果有任何机会session[:submitted_pin]将是nil ,您可以使用session[:submitted_pin].try(:to_i) ;将会返回nil如果未设置变量并防止抛出错误。

关于ruby-on-rails - Ruby on Rails - 检查提交的表单数据是否与数据库数据匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9286598/

相关文章:

ruby-on-rails - Rails4 : My hstore attribute is being converted to String

ruby-on-rails - Markdown 实时预览,如用于 rails 上 redcarpet 的 stackoverflow

ruby - Enumerator::Yielder#yield 方法何时有用?

ruby-on-rails-3 - 导轨 3 : Access to twitter bootstrap variables + mixins without importing it

sql - 如何选择/查找表数据以及最新的关联(多对多)数据

ruby-on-rails - 使用 link_to 创建分层模型的链接

ruby-on-rails - 你如何从 Rails 中的 View 调用方法?

ruby - 使用 Nokogiri 读写 xml 文件

ruby-on-rails - Rails 3 在迁移问题中添加外键

ruby-on-rails - Rails 不正确地缓存页面 - 如何停止?