2016-04-08 17 views
0

kullanım Ben iki model, organizasyon ve tercihleri ​​var.Raylar 4 - Yardımcı Yöntemi - Rails 4.</p> <p>yılında yardımcı yöntemleri kullanmak anlamaya çalışıyorum bir görünüm

dernekler şunlardır: organizasyonum görünümünde

prior_notice_required, ben örgütün tercihlerini görüntülemek çalışıyorum:

benim tercih tablosunda
Organisation has_one :preference 
Preference belongs_to :organisation 

aradım bir özellik var. Kuruluşumun görüntüleme klasöründe, kısmi tercihlerim var. Benim OrganisationsHelper.rb olarak

, bu denedim:

<%= @organisation.preference.prior_notice_required(publicity_notice_required) %> 
<%= publicity_notice_required(@organisation.preference) %> 

<%= publicity_notice_required(@organisation.preference.prior_notice_required) %> 

nasıl bilemiyorum:

organizasyonum tercihleri ​​
module OrganisationsHelper 

    def publicity_notice_required 
     if @organisation.preference.prior_notice_required == true 
      'Prior notice of publicity is required' 
     else 
      'Prior notice of publicity is not required' 
     end 
    end 

kısmi, o zaman bunların her biri denemek Bunu çalışmak için. Nerede yanlış gittiğimi görmek için yardım edenlerle herhangi bir deneyimi var mı?

+0

Şu anda bu kod ile neler oluyor? bir hata mı alıyorsun? eğer öyleyse, ne hata? Lütfen – sixty4bit

+0

olabildiğince tam olarak neler olduğuna dair bilgi verin. <% = publicity_notice_required%> 'seçeneğini deneyin. Parametre almayan ve bir String döndüren bir yöntem tanımladınız, bu yüzden böyle arayın/kullanın. –

cevap

1

Görünümde <%= publicity_notice_required %>'u çağırmak kadar basittir.

Raylar Yardımcılar, uygulamanızın içinde bulunan modüllerdir. Bu hayatı kolaylaştırır, ancak aynı zamanda, en iyi duruma getirme endişesi olan Encapsulation &'un bazı dezavantajları vardır.

http://nicksda.apotomo.de/2011/10/rails-misapprehensions-helpers-are-shit/ Rails yardımcılarını dövmekle birlikte bu makalede, işlerini açıklamakta fayda var!

0

Bunun doğru olup olmadığından emin değilim, ama çalışıyor gibi görünüyor.

<%= publicity_notice_required(@organisation.preference) %> 

ve benim yardımcı için:

Ben benim görünümünü değiştirmek

def publicity_notice_required(organisation) 
     if @organisation.preference.prior_notice_required == true 
      'Prior notice of publicity is required' 
     else 
      'Prior notice of publicity is not required' 
     end 
    end 

I (organizasyon) parantez içinde olması gerekir neden emin değilim ya onun aslında demek eğer tercihini de dahil edin. Umarım bu birisine yardım eder.