2011-07-25 9 views
0

HAMLでフォーム宣言を切り替える必要があります。Rails Haml - end if

- if params[:action] == 'tomato' 
    = form_for @request, :url => 'request/tomato' do |f| 
- else 
    = form_for @request do |f| 

    = f.text_field ... # form content 

    = f.text_field # don't work too 

しかし、私は、フォームの内容から、フォームの宣言を分離するためにendを使用することはできませんので、私は500内部サーバーエラー取得

私はこれをどのように達成することができますか?

+0

あなたのインデント私は両方のバリアントを試してみました – Awea

+0

@Aweaをチェックし、私は 'if'の文が終了し、最初のケースでは二text_fieldは、両方の形式にする必要があり、フォームの内容 –

+0

が表示されていないところHAMLは分からないと思いますか? – Awea

答えて

3

はHAMLはインデントに取り組んでいますので、あなたがもし後にエンドなステートメントを必要としないこの

- args = params[:action] == "tomato" ? {:url => 'request/tomato'} : {} 
= form_for @request, args do |f| 
    = f.text_field :field_one 
    = f.text_field :field_two 
+0

あなたのインデントもすべて間違っています - 3行目と4行目は2つ以上のスペースで字下げされています – stephenmurdoch

+0

@stephenmurdoch彼はスペースの代わりにタブを使用している可能性があります –

+0

ソフトタブはいつも良いです^^ – marcgg

2

を試してみてください。

「if」と「else」が一列に並んでいることを確認し、正しい字下げになるはずのコンテンツを配置してください。