前提・実現したいこと
erbで作成したファイルをhamlに変換しました。
登録画面に遷移したく画面遷移を試みました。
erb時は正常に起動していた入力画面が、haml変換をしたら下記のようなエラーが出てしまった。
変換前通り正常に動くようにしたいです。
発生している問題・エラーメッセージ
syntax error, unexpected end-of-input, expecting keyword_end end ^
該当のソースコード
/views/devise/registrations/new.html.haml
Ruby
1.reg-wrapper 2 .reg-wrapper-content 3 .reg-wrapper-nav 4 %h2 ユーザー情報登録 5 .reg-wrapper-content-form 6 = form_for(@user, url:user_registration_path) do |f| 7 = render "devise/shared/error_messages", resource: @user 8 .field 9 = f.label :ニックネーム, class:"form-texts" 10 %span.must 必須 11 %br/ 12 = f.text_field :nickname , placeholder:"例)フリマ太郎" 13 .field 14 = f.label :メールアドレス, class:"form-texts" 15 %span.must 必須 16 %br/ 17 = f.email_field :email, autofocus: true, autocomplete: "email", placeholder:"PC・携帯どちらでも可" 18 .field 19 = f.label :パスワード, class:"form-texts" 20 - if @minimum_password_length 21 %span.must 必須 22 %br/ 23 = f.password_field :password, autocomplete: "new-password", placeholder:"7文字以上で入力してください" 24 .field 25 = f.label :確認用パスワード, class:"form-texts" 26 %span.must 必須 27 %br/ 28 = f.password_field :password_confirmation, autocomplete: "new-password", placeholder:"もう一度入力してください" 29 .reg-info-box 30 .info-title 31 %h4 本人確認 32 .form-texts 33 %p 安心・安全にご利用いただくために、お客さまの本人情報の登録にご協力ください。他のお客さまに公開されることはありません。 34 .form-set 35 .name-field 36 = f.label :お名前(全角), class:"form-texts" 37 %span.must 必須 38 %br/ 39 = f.text_field :family_name ,placeholder:"例)桜木" 40 .name-second-field 41 %br/ 42 = f.text_field :first_name, placeholder:"例)花道" 43 .form-set 44 .name-field 45 = f.label :お名前かな(全角), class:"form-texts" 46 %span.must 必須 47 %br/ 48 = f.text_field :family_name_kana, placeholder:"例)さくらぎ" 49 .name-second-field 50 %br/ 51 = f.text_field :first_name_kana, placeholder:"例)はなみち" 52 .form-birth-set 53 .field 54 = f.label :生年月日, class:"form-texts" 55 %span.must 必須 56 %br/ 57 = f.text_field :birthday, placeholder:"例)20200101" 58 .reg-info-box-bottom 59 .form-texts 60 %p ※ 本人情報は正しく入力してください。会員登録後、修正するにはお時間を頂く場合があります。 61 .actions 62 = f.submit "次へ進む", class:"reg-submit-btn" 63
/controllers/users/registrations_controller.rb
Ruby
1# frozen_string_literal: true 2 3class Users::RegistrationsController < Devise::RegistrationsController 4 # before_action :configure_sign_up_params, only: [:create] 5 # before_action :configure_account_update_params, only: [:update] 6 7 # GET /resource/sign_up 8 def new 9 @user = User.new 10 end 11 12 # POST /resource 13 def create 14 #登録1ページ目から送られてきたパラメータを@userに代入 15 @user = User.new(sign_up_params) 16 #validメソッドを使ってバリデーションチェック 17 unless @user.valid? 18 flash.now[:alert] = @user.errors.full_messages 19 #and returnを使って条件分岐を明示的に終了させている。 20 render :new and return 21 end 22 #sessionにハッシュオブジェクトで情報保持させるため、attributesメソッドでデータ整形。 23 session["devise.regist_data"] = {user: @user.attributes} 24 session["devise.regist_data"][:user][:password] = params[:user][:password] 25 #build_sned_addressメソッドはhas_one :send_addressのアソシエーションを設定すると使用可。関連付けのあるnewメソッドのようなもの 26 @address = @user.build_send_address 27 render :new_address 28 end 29 30 def create_address 31 #session["devise.regist_data”]の中の["user”]というハッシュの情報を@userに代入。 32 @user = User.new(session["devise.regist_data"]["user"]) 33 @address = SendAddress.new(address_params) 34 unless @address.valid? 35 flash.now[:alert] = @address.errors.full_messages 36 render :new_address and return 37 end 38 @user.build_send_address(@address.attributes) 39 @user.save 40 session["devise.regist_data"]["user"].clear 41 sign_in(:user, @user) 42 end 43 44 # GET /resource/edit 45 # def edit 46 # super 47 # end 48 49 # PUT /resource 50 # def update 51 # super 52 # end 53 54 # DELETE /resource 55 # def destroy 56 # super 57 # end 58 59 # GET /resource/cancel 60 # Forces the session data which is usually expired after sign 61 # in to be expired now. This is useful if the user wants to 62 # cancel oauth signing in/up in the middle of the process, 63 # removing all OAuth session data. 64 # def cancel 65 # super 66 # end 67 68 protected 69 70 def address_params 71 params.require(:send_address).permit(:send_full_name, :send_name_kana, :post_number, :prefectures, :city, :address) 72 end 73 74 # If you have extra params to permit, append them to the sanitizer. 75 # def configure_sign_up_params 76 # devise_parameter_sanitizer.permit(:sign_up, keys: [:attribute]) 77 # end 78 79 # If you have extra params to permit, append them to the sanitizer. 80 # def configure_account_update_params 81 # devise_parameter_sanitizer.permit(:account_update, keys: [:attribute]) 82 # end 83 84 # The path used after sign up. 85 # def after_sign_up_path_for(resource) 86 # super(resource) 87 # end 88 89 # The path used after sign up for inactive accounts. 90 # def after_inactive_sign_up_path_for(resource) 91 # super(resource) 92 # end 93 94end 95
変換手順
こちらを参考に変換を行いました。
https://qiita.com/tsuchinoko_run/items/0503fb87c0cb51bcecc7
gem 'haml-rails' gem 'erb2haml'
bundle install
rake haml:replace_erbs
試したこと
同じような質問をされている方がいらっしゃったので
form_for周りの記述、インデントなどがおかしいと考え試みましたが直りませんでした。
回答1件
あなたの回答
tips
プレビュー