无法找到没有ID的用户(设计用户模型)

时间:2014-01-14 17:11:03

标签: ruby-on-rails

我是铁杆新手。我有一个Devise用户模型。我试图从用户获取输入并将其与字符串进行比较并重定向到另一个页面(如果相同)。但@user存在一些问题。这将是一个简单的问题,但我被困了几个小时。请帮忙。

questions_controller

class QuestionsController < ApplicationController

def qn1
  @user = User.find_by_email(params[:email])
end

def submit
  @user = User.find_by_email(params[:user])
  if @user.answer == 'blank'
    render root_path
  else
    render 'qn1'
  end
end
end

qn1.html.erb

<%= form_for(@user, :url => {:controller => "questions", :action => "submit"}) do |f| %>

  <%= f.label :answer %>
  <%= f.text_field :answer %>

  <br>
  <%= f.submit "Submit", class: "btn btn-large btn-primary" %>
<% end %>

1 个答案:

答案 0 :(得分:1)

您应该使用它的多维数组检索form_for发送的参数,如下所示:

params[:user][:attribute]

您告诉我们您安装并运行了Devise。如果您已登录,则访问当前用户的最简单,最安全的方法是使用以下方法(通过登录时自动提供)

current_user

所以,如果你想比较当前用户发送的答案,你可以这样做:

# QuestionsController
def submit
  if current_user.answer == params[:user][:answer]
    redirect_to root_path
  else
    render 'qn1'
  end
end

或者,如果只是比较用一些任意字符串发送的答案,你甚至不需要用户模型:

# QuestionsController
def submit
  if params[:user][:answer] == 'blank'
    redirect_to root_path
  else
    render 'qn1'
  end
end

您不应该检索用户或实例化新用户,只是设置它对表单发送的答案,并将其与字符串进行比较。这绝对没必要。