2010-11-08 11 views
5

kullanan model dışı formun içeriğinin geri yüklenmesi İlk Rails uygulamasında (Rails 3 kullanarak) iyi bir ilerleme kaydediyorum. MVC etkileşimi her şey yolunda gidiyor, ancak doğrudan bir modelle ilgili olmayan bir formla ilgili sorun yaşıyorum.Raylar: form_tag

Form_tag kullanıyorum ve başarı durumunda her şey iyi davranıyor. Ancak, hataların ele alınması biraz düşmancadır. Asıl hata mesajı flaşta saklanır ve paftalar/application.html tarafından görüntülenir, ancak formun kullanıcının doldurulan içeriği hatırlaması durumunda gerçekten hoşuma giderdi. Ancak, şunları yapmaz: Tüm alanlar varsayılan değerlerine sıfırlayın.

Nesnelerdeki RESTful eylemleri için formların gönderilen değerleri otomatik olarak hatırlama biçimini ve hata varsa kırmızı renkte vurgulanmasını seviyorum. Kırmızı vurgu olmadan iyiyim, ancak formun alanlarının sunulan değerleri saklamasını sağlayabilirsem gerçekten hoşuma giderdi.

Bunu nasıl yapacaklarını öneren herhangi biri var mı? İlgili dosyalarından

alıntılar:

görüntüleme/cardsets/import.html.erb :

<%= form_tag :action => :import_data, :id => @cardset do %> 
    ... 
    <%= text_field_tag "separator", "", :maxlength => 1 %> 
    ... 
    <%= text_field_tag "formatting_line" %> 
    ...etc (more fields) 

kontrolörleri/cardsets_controller.rb:

# POST /cardsets/1/import_data 
def import_data 
    success, message = @cardset.import_data(params, current_user) 
    if success 
    redirect_to(@cardset, :notice => message) 
    else 
    flash.now[:error] = message 
    render :import 
    end 
end 

cevap

9

text_field_tag ​​ikinci arg olduğunu ile doldurulacak değer. Böyle bir şey deneyin: saha varsayılan varsa

<%= text_field_tag "separator", params[:separator], :maxlength => 1 %> 
+0

Harika çalıştı! Teşekkürler! – AlexC

1

, formun "gösteri" işlemi ile ayarlamak isteyeceksiniz:

# GET 
def show_form 
    params[:key] = 'default' 
end 

# POST 
def validate_form_and_act 
    # Don't set it here to reuse what the user passed. 
end 

veya doğrudan şablonu (az iyi çünkü her zaman bir || kullanır ve görüntülemek için daha fazla denetleyici verisi ekler):

<%= text_field_tag 'name', params[:key] || 'default' %>