我真的不知道,如果这里存在一个问题,或者我在错误的方式接近这一点,但任何建议将不胜感激!

在当用户注册,他们得到的特权和它们的页面被设置应用程序,他们就可以通过电子邮件邀请同事。

在电子邮件具有标记在端的激活代码。一个例子的URL是 “的 /用户/新/ XXXXXXXXX ”。

这里的问题:我需要的同事能够创建一个用户帐户为好,只有他们的基本信息,这样他们就可以登录到该帐户,并建立了应用程序的角落

当同事使得用户一个错误注册的形式中,URL忘记有激活代码,以及与验证消息和'/用户的一个相当裸URL跳回。 当同事修正自己的错误并点击登录后,会提交一个完全成熟的用户,而不是一个被邀请的同事。

这是因为我有一个如果子句'用户/新页面上

<% if @activation_code %>
  Show colleague messages of invitation and happiness
<% else %>
  Show fully fledged user ego stroking messages
<% end %>

我的路由找到URL的码参数是:

map.signup '/users/new/:code', :controller => 'users', :action => 'new', :code => nil

就像我之前说的,有我走近这个完全错误的?这里是一个有问题吗?

<强>更新 这Rails的Cast的情节几乎解决了所有的我有问题:测试版邀请

虽然区分,如果该人是从邀请来不来我只是用此条件块:

if !@user.invitation_id.blank?

和该工作很大。

有帮助吗?

解决方案

即时猜测你的控制器看起来是这样的:

def create
  if @user = User.create(params[:user]) && @user.new_record?
    #take the user to where you want them to go
  else
    #there was an error
    flash[:error] = "Oops, blah blah blah"
    render :action => "new"
  end
end

问题是,你没有在视图中@activation_code了。所以,我建议你通过activation_code早在隐藏的表单字段。

def create
  @activation_code = params[:activation_code]
  if @user = User.create(params[:user]) && @user.new_record?
    #take the user to where you want them to go
  else
    #there was an error
    flash[:error] = "Oops, blah blah blah"
    render :action => "new"
  end
end

这时候您呈现来自创建行动“新的”视图方式您认为仍然有必要的@activation_code帮助它呈现适当的条件元素。

其他提示

一旦他们使用验证码访问该页面,你可能会考虑包括在<input type="hidden" />标签确认代码,以确保它保存回发之间。

否则,您需要修改您的注册表单,包括激活码的行动;是这样的:

form_for @user, :url => "/users/new/#{@activation_code}" do |f|
# ...
end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top