質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

952閲覧

erbファイルをhamlに変換後syntax errorが起きてしまう

tessyman

総合スコア8

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1グッド

1クリップ

投稿2020/06/22 04:23

編集2020/06/22 05:07

前提・実現したいこと

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周りの記述、インデントなどがおかしいと考え試みましたが直りませんでした。

hatori_r👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gouf

2020/06/22 05:01

どのような手順で変換されましたか? (追記情報があれば 質問欄の編集をお願いします)
tessyman

2020/06/22 05:08

ありがとうございます。 変換手順を追加いたしました。
guest

回答1

0

自己解決

解決いたしました。
ifのインデントがずれていたようです。
if文からインデントを1つずらして解決いたしました。

投稿2020/06/22 07:34

tessyman

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問