2016-12-27 98 views
0

我試圖創建Rails相關的邀請URL新的註冊頁面,像這樣單獨的註冊表格:滑軌設計註冊:用戶類型對應的

http://localhost:3000/users/sign_up?school=Elementary&principal=true

當用戶邀請他們的委託人註冊後,我想要有不同的體驗(隱藏常規註冊頁面中某些字段的新模板)。

我能夠在PARAMS傳遞到像這樣的形式:

<%= f.text_field :school, :value => params[:school] %> 

但我不能隱藏取決於用戶從進來的URL某些輸入的觀點得到邏輯。從本質上講,我期待叉new.html.erbnewprincipal.html.erb

回答

0

完成在控制器中principal PARAM的是檢查值和渲染基於一個正確的模板的最簡單方法它,例如:

class RegistrationsController < Devise::RegistrationsController 

    def new 
    render :new_principal if params[:principal] == true 
    end 

end 

Ruby on Rails的如下convention over configuration範例,所以除非principal PARAM設爲true(或不存在)的默認new模板將被渲染。您可以在the official Rails guide中閱讀更多關於佈局和渲染的內容。

+0

我正在使用Devise進行用戶管理 - 這是否會位於新的控制器中?如果是這樣,我該如何告訴Devise使用它? – beaconhill

+0

要告訴設計你需要更新'config/routes.rb'文件:'devise_for:users,controllers:{registrations:'registrations'}',之後你可以創建一個新的控制器,它應該繼承自'Devise :: RegistrationsController ',就像上面的代碼片段一樣,你可以擴展設計行爲。 –

+0

當我進入註冊頁面時,我現在得到這個錯誤:'註冊中的ArgumentError#新形式的第一個參數不能包含零或爲空,並且第一行包含:'<%= form_for(resource,as: resource_name,url:registration_path(resource_name))do | f | %>' – beaconhill