2016-04-04 17 views
1

Hata iletilerini görüntülemek için evrensel bir kısmi yapmaya çalışıyorum. Içine f.object geçiyor. Ama object, kısmi benim içinde nil.HAML: f.object (form_for) yerel kısmi olarak geçti

= form_for :post, url: posts_path do |f| 

    = render 'shared/error_messages', object: f.object 

    %p 
    =f.label :title 
    =f.text_field :title 
    %p 
    =f.label :body 
    =f.text_area :body 

    =f.submit "Create" 

new.html.haml, ERB In/_error_messages.html.haml

- if object.errors.any? 
    #error_explanation 
    .alert.alert-danger 
     You made 
     = pluralize(object.errors.count, "mistake") 
     Please fix: 
     %ul 
     = object.errors.full_messages.each do |msg| 
      %li= msg 

paylaşılan bu no-beyin oldu. Her şey düzgün girintili edilir (umarım) ama local_assigns yoluyla kısmi iç kontrol ederseniz, ben Raylar 4.2.5 {:object=>nil,:error_messages=>nil}

,

cevap

2

İçinde değil HAML ile ilgisi yoktur.

Bir nesneyi form_for'a aktarmıyorsunuz, yani f.object gerçekten nil'dur.

kontrol Kullanım @post = Post.new ve Tamam

= form_for @post do |f| 
+0

Teşekkürler Vasfed, ben de aynı şeyi buldum :) Büyük destek, çocuklar! –

0

HAML 4.0.7 Muhtemelen form_for bloğun içine error_messages işlemek istiyorum olsun. Burada gönderdiğiniz yol - render'un bir girintisi yoktur, bu nedenle, form_for

+0

. Kodu kopyalarken bu sadece bir hata oldu. Sorun başka bir yerde olmalı. ama iyi yakalayın! –

0

, o çözüldü. Bazı nedenlerle, bu

işinize yaramazsa. Çalışması için IVAR @post kullanmanız gerekir. Kodumda düzgün şekilde girintili olarak