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

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

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

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby on Rails

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

Q&A

解決済

1回答

1016閲覧

hamlで<option value="<%= c.id %>"><%= c.name %>を書く方法とは?

susume

総合スコア13

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/08/24 16:30

編集2020/08/25 14:48

前提・実現したいこと

hamlでタイトルにあるコードを書く方法が知りたい。

現在、個人アプリの開発にてカテゴリー機能を実装しています。
その中で、

<option value="<%= c.id %>"><%= c.name %></option> <option><%= c.name %></option>

このような文法の場合、hamlではどのように書くのでしょうか?

%option{value: "hoge"}

みたいに書くのはできるんですが、それよりも高度なコードになっているので、なかなか自分で実装できずに困っています。

ちなみに参考にしている記事は、以下の記事のセレクトボックスを表示するです。
https://qiita.com/kenzoukenzou104809/items/07f6b5f7fdcf2761ac8f

【追記】
##該当コード
_form.haml.html

= form_for(@post) do |f| .field .field-label = f.label :title, "snowB" .field-input = f.text_field :title .field .field-label = f.label :body, "ココがポイント!" .field-input = f.text_area :body .field .field-label = f.label :image, "snowB写真" .field-input = f.attachment_field :image .category = render partial: "category" .actions = f.submit "投稿する", class: "btn"

_category.haml.html

.categorySelect %select#pararent_category - @parent_categoryies.each do |c| = options_for_select([['= c.id', =c.name]])

##エラー文

_category.html.haml:4: syntax error, unexpected '=', expecting ']' ...ptions_for_select([['= c.id', =c.name]]) ... ^ _category.html.haml:4: syntax error, unexpected ']', expecting ')' ...for_select([['= c.id', =c.name]]) ... ^ _category.html.haml:5: syntax error, unexpected keyword_end, expecting ')' ...t.buffer << ("\n".freeze);; end;; _hamlout.buffer << ("</sel... ... ^~~ _category.html.haml:5: syntax error, unexpected keyword_ensure, expecting ')' ...:Util.html_safe(_erbout);ensure;@haml_buffer = @haml_buffer.... ... ^~~~~~ _category.html.haml:5: syntax error, unexpected keyword_end, expecting ')' ...uffer.upper if @haml_buffer;end; ... ^~~ _category.html.haml:8: syntax error, unexpected keyword_end, expecting ')' end ^~~

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

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

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

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

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

guest

回答1

0

ベストアンサー

こういう場合私はoptions_for_selectを使います

投稿2020/08/24 22:54

winterboum

総合スコア23284

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

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

susume

2020/08/25 02:04

ご回答ありがとうございます。 ご教示いただいた以下の記事にて試しにコード書いてみました。 https://railsdoc.com/page/options_for_select 記事にある参考コード ``` options_for_select([['Japanese', 'JPN']], 'JPN') ``` ``` %select#pararent_category - @parent_categoryies.each do |c| = options_for_select([['= c.id', =c.name]]) ``` しかし、エラーが出てしまい、なかなか思うようにコードが書けません。 質問のコードをhamlで実現するには、どのようなコードを書けば良いのでしょうか?
winterboum

2020/08/25 02:48

エラーが出たときはどういうエラーか書いていただかないと。。。
winterboum

2020/08/25 02:54

使い方おかしいな。 options_for_select の引数は 実際の値の 配列か配列の配列かHashの配列 です。 options_fr_select自体は select_tag や select の引数です。 もしかして Railsっぽい書き方していないのかな。 view全体を載せて
susume

2020/08/25 03:22

失礼いたしました。 view全体のコード _form.haml.html ``` = form_for(@post) do |f| .field .field-label = f.label :title, "snowB" .field-input = f.text_field :title .field .field-label = f.label :body, "ココがポイント!" .field-input = f.text_area :body .field .field-label = f.label :image, "snowB写真" .field-input = f.attachment_field :image .category = render partial: "category" .actions = f.submit "投稿する", class: "btn" ``` _category.haml.html ``` .categorySelect %select#pararent_category - @parent_categoryies.each do |c| = options_for_select([['= c.id', =c.name]]) ``` こちらのコードでは、構文エラーが出ています。 以下エラー文です。 _category.html.haml:4: syntax error, unexpected ']', expecting ')' ...for_select([['= c.id', =c.name]]) _category.html.haml:5: syntax error, unexpected keyword_end, expecting ')' ...t.buffer << ("\n".freeze);; end;; _hamlout.buffer << ("</sel... ... ^~~ _category.html.haml:5: syntax error, unexpected keyword_ensure, expecting ')' ...:Util.html_safe(_erbout);ensure;@haml_buffer = @haml_buffer.... ... ^~~~~~ _category.html.haml:5: syntax error, unexpected keyword_end, expecting ')' ...uffer.upper if @haml_buffer;end; ... ^~~ _category.html.haml:8: syntax error, unexpected keyword_end, expecting ')' end ^~~
winterboum

2020/08/25 05:18

インデント命なので、質問欄に<code>でつけてください
susume

2020/08/25 07:06

質問に該当コードやエラー文を追記いたしました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問