2012-03-07 27 views
28

Örneğin, "new_work_path" adlı bir dize oluşturdum, şimdi bu yardımcıyı bir yöntem olarak çağırmak istiyorum.Rota yardımcısını raylarda dinamik olarak nasıl çağırırsınız?

send("new_work_path", vars)'u denedim ve aynı iletiyi birçok nesneden çağırdım. Ama ben bu yardımcıları aramak için doğru nesneyi bulduğumu düşünmüyorum.

object.send("new_work_path", vars) yapmak için nesnesinin nedenini arıyorum?

İnternet'te bir süre aramayı denedim ama bir şey bulamadım. Eğer bu konuda bazı ışıklar aydınlatabilirse, bu harika olurdu!

Teşekkürler!

+3

Yardımcısı yöntemleri yalnızca bir manken, bir görünüm kapsamında çağrılabilir deneyin. Bunu yapmaya çalıştığınız yer hakkında daha spesifik olabilir misiniz? Doğru içeriğe sahipseniz standart bir 'gönder 'çağrısı yeterli olmalıdır. – tadman

+0

Bunu, standart bir yol yardım çağrısı işlevinin düzgün şekilde işleyeceği application_helper'da çalıştırmaya çalışıyorum. – gtr32x

+3

Aldığınız hatanın nedir? Bir örnek gönderebilir misin? "New_work_path" ifadesi doğrudan çalışıyorsa, gönder (: new_work_path) 'eşdeğer olmalıdır. – tadman

cevap

34

bu yapmaya çalıştığın buysa Rails.application.routes.url_helpers.send(...)

+0

da iyi çalışır. "En iyi cevap" hak ediyor :) –

+1

Bu iyi çalışıyor. İç içe bir kaynağa bağlanmak istediğinizi varsayalım, 'Rails.application.routes.url_helpers.send ('new _ # {@ model.class.name.downcase} _comment_url", "#{@model.class.name) yazabilirsiniz. .downcase} _id ".to_sym => @model)', çünkü bir "model_id" ebeveyine ihtiyacınız var. – Avishai

+0

"Rails :: Engine" adlı dizinden 'url_helpers' öğesine erişmeye çalışıyorsanız," :: Engine ".constantize.routes.url_helpers.send (...) 'ifadesini" "' den" 'route.rb' dosyanızda mount' satırı. – erroric

8

Benim kötü, @tadman'ın önerdiği gibi, tekrar send(:new_work_path, args)'u kullanmayı denedim ve işe yaradı! Daha önce yanlış yazmış olmalı. aynı zamanda bazı sözdizimsel şeker sunmak gibi görünüyor

new_polymorphic_path(Work, args) 

:

dışarı hemen eserler göndermek olduğunu bulma önce, ilgi de başka bir çözüm bulmuştu.

+0

polymorphic_path eğlencelidir, ayrıca 'polymorphic_path (: foo)' veya 'polymorphic_path (" bar ")' ' –

İlgili konular