[英]Ruby on rails: Model Form
我是Rails的新手,不確定如何解決這個問題。 我有一個名為User的標准模型,在User中,我有10個不同的屬性。 這10個屬性包括供用戶選擇類型為“ a”或類型為“ b”的天氣的屬性。 當用戶單擊注冊時,我希望他們選擇天氣,他們鍵入“ a”或鍵入“ b”。 如果它們是“ a”類型,我希望將它們重定向為僅填寫5個屬性。 如果它們是“ b”類型,我希望它們填寫其他4個屬性。 我的問題是如何在控制器中創建邏輯,以在第一個初始問題之后將其重定向到正確的格式。
[編輯]
這合乎邏輯嗎?
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(personality_selection)
if @user.save
redirect_to root_path
else
render :new
end
end
private
def personality_selection
params.require(:user).permit(:personality_a_or_b)
if params[:personality] == 'a'
redirect_to type_a_path
elsif params[:personality] == 'b'
redirect_to type_b_path
end
end
def type_a
params.require(:user).permit(:trait2, :trait3, :trait4 :trait5, :trait6)
end
def type_b
params.requrie(:user).permit(:trait7, :trait8, :trait9, :trait10)
end
end
具有一個初始形式,用戶可以在其中輸入非個性信息以及它們是“ a”還是“ b”類型。 類型“ a”或“ b”的選擇應輸入屬性“ personality_type”。
保存時,控制器將重定向到新的個性特定表格,其中僅包含與該個性有關的字段。
保存下一個表單時,它將保存到“更新”控制器操作中,並且僅更新個性字段。
users_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
if @user.personality_type == 'a'
redirect_to edit_personality_a_path(@user)
else
redirect_to edit_personality_b_path(@user)
end
else
render :new
end
end
def update
@user = User.find(params[:id]
@user.update(user_params)
redirect_to @user
end
def edit_personality_a
@user = User.find(params[:id])
end
def edit_personality_b
@user = User.find(params[:id])
end
private
def user_params
params.require(:user).permit(..params..)
end
end
edit_personality_a.html.erb
= form_for @user do |f|
.... put all the form fields that are specific 'a' personality.
edit_personality_b.html.erb
= form_for @user do |f|
.... put all the form fields that are specific 'b' personality.
routes.rb
resources :users do
get 'edit-personality-a' => 'users#edit_personality_a', as: 'edit_personality_a'
get 'edit-personality-b' => 'users#edit_personality_b', as: 'edit_personality_b'
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.