2011-03-11 36 views
8

formunda gönderin Formlar hakkında bir sorum var. Bir başlık ve gövde ile bir gönderiyi (uygulamanızda eReport olarak adlandırılır) kaydeden oldukça standart bir form var. Tabloda ayrıca boole olan "yayınlanmış" bir alan vardır. Kaydedilen eReport, yalnızca bu alanın true değerine ayarlanmışsa, yanlış olduğunda varsayılan olarak halka açık sitede gösterilir.2 formunu

Varsayılan onay kutusundan ziyade, formun sonunda iki düğme görüntülemek istiyorum: "Şimdi Yayınla" düğmesi ve "Taslak Olarak Kaydet" düğmesi. Kullanıcı eski basarsa, yayınlanan alan doğru olarak ayarlanır. İkincisi ise, o zaman yanlış. PHP'de, farklı ad değerlerine sahip 2 gönderme alanı görüntüledim, daha sonra oluşturmak için uygun SQL sorgusunu belirlemek için bir if/else deyimiyle girdiyi işledim. Rails'de, bu mantığı denetleyiciye uygun eylemde yerleştireceğimi varsayıyorum, ancak düğmelerin ad veya kimlik değerlerini nasıl değiştireceğimi bilmiyorum.

Kayıt için, Formtastic kullanıyorum, ancak birisi bana bunu varsayılan Rails form etiketleriyle nasıl yapacağımı gösterebilirse, bu da sorun değil. Şu anki haliyle formumun kodu şöyledir:

<% semantic_form_for @ereport do |form| %> 

    <% form.inputs do %> 
    <%= form.input :title %> 
    <%= form.input :body %> 
    <% end %> 
    <% form.buttons do %> 
    <%= form.commit_button :label => "Publish Now" %> 
<%= form.commit_button :label => "Save as Draft" %> 
    <% end %> 
<% end %> 

Yardım için şimdiden teşekkür ederiz!

cevap

20

Ben formtastic bilmem, ancak varsayılan raylar oluşturucu formu ile, bunu şöyle yapabilirsiniz:

<%= form.submit "Save with option A", :name => "save_option_a" %> 
<%= form.submit "Save with option B", :name => "save_option_b" %> 

Sonra denetleyicisi, sen params olanlar alabilirsiniz:

@iddlefingers cevap ek olarak
if params[:save_option_a] 
    # do stuff 
end 
+0

Bilgi için teşekkürler! Bu harika çalıştı. – joshukraine

0

jQuery'yi kullanmanız gerektiğini düşünüyorum. Düğme tıklama etkinliğine bağlanabilir ve belirtilen konum için formu gönderebilirsiniz.

+0

JQuery'yi bu günlerde öğrenmeye başlıyorum, ancak bunu aklımda tutacağım. Teşekkürler! – joshukraine

1

, burada uygulamanın günlük bir görünüşüdür

Parameters: {"utf8"=>"✓", ..., "comentar"=>"Confirmar"} 
(açıklama amacıyla nedeniyle bazı gereksiz params şeritleme)

Burada comentar parametresinin adı olduğunu görüyoruz ve "Confirmar" bunun değeridir, bu da düğmenin metni.

(eğer Çalıştığınız params sayısını azaltmak istiyorsanız) sahip olabilir Yani genel olarak submit_tag "Confirmar", :name => 'comentar'

ile elde edilmiştir

submit_tag "othervalue", :name => 'SAMEname', submit_tag "onevalue", :name => 'SAMEname' birkaç ...

ve bunları almak senin denetleyici

if params[:SAMEname] == "onevalue" 
# do stuff 
elsif params[:SAMEname] == "othervalue" 
#do different stuff 
end 
İlgili konular