2016-04-19 6 views
2

フォームで作業していますが、フォームの送信に問題があります。ユーザーがエントリを混乱させるか、スキップすると、すべてのエラーメッセージがページの上部に表示されます。代わりに各投稿の隣にレンダリングするようにすればいいのですか?Ruby on Railsのフォーム提出の横に表示される単純なフォームエラーメッセージ

私のコントローラは、それぞれのモデルが作られ、エラーが定義されたハッシュ持ってしようとしている

.field 
    = f.label :first_name, required: false, class: "font required-field" 
= f.text_field :first_name, :required => "", class: "stretch test" 

と私のCSS

.font{ 
vertical-align: text-bottom; 
font-size: 15px; 
font-weight: bold; 
font-family: "Helvetica Neue"; 
height: 15px; 
} 

.required-field::before{ 
content: ' *'; 
float: right; 
color: red; 
padding-left: 5px; 
} 

.test:valid{ 
    border: 1px solid #00aeef; 
} 

.test:invalid{ 
    border: 1px solid red; 
} 

答えて

6

のように見える私の見解では

def new 
@form_submission ||= FormSubmission.new 
end 

def create 
@form_submission = FormSubmission.new(form_submission_params) 

if @form_submission.save 
    redirect_to thank_you_path 
else 
    render :new 
end 
end 

のように見えますモデルの各属性のエラーの数1つの属性、この場合は@form_submissionモデルのfirst_name属性のエラーだけにアクセスするために、@form_submission.errors.full_messages_for(:first_name)のようなものをビューで実行できます。私はそれは素晴らしい解決策だと思う

私は通常、この

<% unless errors.nil? %> 
    <div class="error-explanation"> 
    <ul class="list-unstyled"> 
     <% errors.each do |error| %> 
     <li><%= error %></li> 
     <% end %> 
    </ul> 
    </div> 
<% end %> 

ようになりますよう、フォームのエラーの部分を作成し、フォーム

<%= render partial: 'shared/form_error', locals: {errors: @form_submission.errors.full_messages_for(:body)} %> 
+0

の各フィールドのためにそれにアクセス!しかし、私は 'undefined method 'errors' for 'nil:NilClass'でエラーメッセージを表示し続けています。 – kdweber89

+0

' @ post' @ kdweber89の代わりにローカルとして '@ form_submission'を使うべきです。 –

+0

はい、例として@postを使用していましたが、設定に適用されるように更新します。 – Justin

関連する問題