方法1:堅持選擇在一個隱藏字段
<li><%= link_to "Sign up", new_user_registration_path %></li>
<li><%= link_to "Are you a Medical Professional?", new_user_registration_path(medical: true) %></li>
你可以利用一個參數在一個快速解決方案的路線:new_user_registrations_path(medical: true)
將導致路由帶有附加?medical=true
)。
在您的註冊表單中,您可以檢查參數是否已設置,然後設置隱藏字段以記住設置。
# Remember the medical user setting
<%= f.check_box :medical, checked: params[:medical].true?, hidden: true %>
我不能肯定的check_box標籤是否會像那個,隨時如果你發現的語法是不同的編輯。希望能幫助到你。
方法2:覆蓋設計RegistrationsController
這是完全可能的,剛纔看到的文檔。不過,在做這件事情時我會感到有點疲憊,因爲Devise控制器的內部可能會發生變化,您需要手動同步這些更改。
方法3:根據要求:顯示不同的註冊形成
使用參數你可能會在視圖決定渲染(不是很好,不是時尚,而是工作:-D)的形式。
<% if params[:medical] %>
<%= render 'medical_signup_form' %>
<% else %>
<%= render 'regular_signup_form' %>
<% end %>
這兩種形式都需要攜帶所有相關的註冊屬性。這肯定是一些代碼重複,但在我看來,值得不必重寫設備的控制器操作,可能需要改變,而不會發現。
非常感謝。這看起來像它會工作,但是,我希望顯示一個不同的註冊頁面,取決於他們點擊的鏈接。有沒有辦法在控制器級別檢查參數並呈現不同的頁面(使用不同的表單)?如果您修改了答案,請不要刪除您已提供的信息,因爲這非常有用。謝謝。 – Leahcim 2013-03-25 20:49:28
我已經發布了不同形式的另一種方法。希望能幫助到你。 – 2013-03-25 20:59:13
謝謝,我感謝幫助。 – Leahcim 2013-03-25 21:00:50