通过facebook注册验证添加hidden_field



我想在我的facebook注册验证中添加一个隐藏字段。Im使用omniauthdevise。我需要找到一种方法,在点击facebook注册按钮时添加一个字段,以确定用户是基本用户还是会员。在link_to上,我可以添加另一个字段吗?它会被传递给某个控制器或模型吗?

  • 上次我尝试制作一个表单,url是指向omniauth(:facebook)的链接,添加了一个值为"member"的隐藏字段user_type

下面是我尝试的示例,尽管我的用户表没有用member或"基本用户"更新。

<%= form_for(resource, :url => user_omniauth_authorize_path(:facebook)) do |h| %>  
<%= h.hidden_field :user_type, value: 'member' %>
<%= h.submit "Sign Up With Facebook", class:"btn btn-primary2" %>
<% end %>

这是我的user.rb模型

def self.from_omniauth(auth)
# anonymous_username = "NewUser#{User.last.id + 1}"
generated_password = Devise.friendly_token[0,20]
user = User.where(:email => auth.info.email).first
if user
return user
else
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.confirmed_at = Time.now
user.fullname = auth.info.name
user.provider = auth.provider
user.uid = auth.uid
user.email = auth.info.email
user.password = generated_password
if auth.info.image.present?
avatar_url = process_uri(auth.info.image)
user.avatar = URI.parse(avatar_url)
end
end
user.update_attributes username: "NewUser#{user.id}"
end
end
  • 在哪里可以找到我刚刚用hidden field制作的user_type数据
  • 我应该在我的表单中使用resource,就像我的非facebook自定义表单一样,还是应该使用@user

如果从隐藏字段获取数据是不可能的,那么我还有什么方法可以做到这一点?也许我可以使用一个会话,但我真的不明白设计会话是如何工作的,也不知道在哪里可以编辑它们来包含这一点。

我认为你不需要表单。由于你的字段是隐藏的,所以你不希望用户更改它,那么你可以通过一个链接向facebook授权,并将参数添加到你的URL中。

<%= link_to "Sign Up With Facebook", omniauth_authorize_path(:user, :facebook, user_type: 'member') %>

然后在背面,当他们发回数据时,它在auth散列中可用。

在您的模型中,您可以使用auth.options再次获取数据:

auth.params[:user_type]

最新更新