簡體   English   中英

Ruby on Rails:模型形式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM