2017-08-16 21 views
10

ben 5.Hacking RJS davranış 5

Bir sorunu raylar çoğunlukla üzerinde dönüştürdüğünüz bir eski raylar 2.x projeyi olduğunu var o benziyordu bu yüzden, RJS kullanılan benim bazı eylemlerinin:

page.call "User.create", render(:partial => 'new_user'), {:userId => @user.id} 

krom tepki bakarak ben sadece dönen görebilirsiniz:

new_user.js.rjs

if request.xhr? 
    render :action => 'new_user' and return 
end 
gibi bir şey görünüyor
User.create('<tr><td>....</td></tr>', {"userId" : 123}); 

Sadece page.call tipi RJS çağrısını desteklemeliyim, bunu raylar 5'de çalışmak için kolay bir "kesmek" ne olurdu?

Tüm javascript kodlarımı değiştirmek istemiyorum, temel olarak JS kodlarını görüntü sayfalarımda geçirdiğim bir javascript bloğuna sahip olmam gerekiyor mu?

+0

Yani, raylar 5 içinde rjs kullanamazsınız demek? –

+0

@AkiraSuzuki Evet, rayların 3.x'te çıkarıldığına inanıyorum – Blankman

cevap

2

:

some_partial_html = render_to_string(:partial => 'something') 

response = { 
    "html": some_partial_html, 
    "a" : 1 
}.to_json 
render json: response 

Ve sonra görüşüme göre json yanıt değerlerini, javascript nesnesine yönelik argümanlar olarak kullandım İhtiyacım olan işlevselliği orms.

2

deneyin bir dize olarak bir yanıt işlemek için:

if request.xhr? 
    render render_to_string partial: 'new_user', 
    locals: { userId: @user.id }, 
    layout: false 
end 

Veya bunun yerine biçim işleyicisi kullanmayı deneyin: Bu gibi benim bakış sayfalara bir JSON yanıtını döndürerek sona erdi

respond_to do |format| 
    format.rjs do 
    render render_to_string partial: 'new_user', 
     locals: { userId: @user.id }, 
     layout: false 
    end 
end