2016-03-28 13 views
1

Kullanıcı tarafından tasarlanan ve model alınarak oluşturulan sütun bilgisini ekledim. Kullanıcının alan bilgilerini kayıt yoluyla doldurmasını istemiyorum. kullanıcı kendi bilgilerini düzenlemek mümkün olmalıdır userinfo ben sayfada profilParazitlerle doğru bilgiyi nasıl alabilirim?

class PagesController < ApplicationController 

    def myprofile 
    @currentUser = User.find_by_id(current_user.id) 
    end 

    def userinfo 
    @currentUser = User.find_by_id(current_user.id) 

    if request.post? 
     if @currentUser.update(params[:userinfo].permit(:information)) 
     redirect_to myprofile_path 
     else 
     render 'userinfo' 
     end 
    end 
    end 

end 

gibi diğer sayfalar için denetleyici yarattı.

<div id="page_wrapper"> 

    <h2>Hey, <%= @currentUser.username %>, add some information about you: </h2> 
    <%= form_for @currentUser.information do |f| %> 
    <p> 
     <%= f.label :information %><br /> 
     <%= f.text_area :information, autofocus: true %> 
    <p> 

    <p> 
     <%= f.submit "Save" %> 
    <p> 
    <% end %> 

</div> 

Uygulama Denetleyici:

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 
    before_action :configure_permitted_parameters, if: :devise_controller? 

    protected 
    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :information, :email, :password, :password_confirmation, :remember_me) } 
    devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :information, :email, :password, :remember_me) } 
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :information, :email, :password, :password_confirmation, :current_password) } 
    end 
end 

Ben onu kurtarmak için çalıştığımda olsun

tanımsız yöntem `izni' nil için: NilClass

İşte

görünümüdür

Nasıl düzeltebilirim? Belki bu işi yapmanın daha iyi bir yolu var mı? Şifre, kullanıcı adı vb. Düzenlemek için tüm formu göstermek istemiyorum. Sadece bilgi. nil için

cevap

0

tanımsız yöntem `izni': NilClass

Yanlış yapıyorlar. params, :userinfo anahtarını içermez. params, :user => {:information => 'value'} gibi görünür. Eğer güncelleme belli rekor çalışıyoruz olarak da

altına
#controller 
def userinfo 
    @currentUser = User.find_by_id(current_user.id) 

    if @currentUser.update(user_params) 
    redirect_to myprofile_path 
    else 
    render 'userinfo' 
    end 
end 

protected 
def user_params 
    params.require(:user).permit(:information) 
end 

Ve kodunuzu değiştirmek gerekirdi, Nihayet

<%= form_for @currentUser.information do |f| %> 

için
<%= form_for @currentUser, method: put do |f| %> 

değiştirmeniz gerekir İlgili controller#action için post rotasını ayarladıysanız, o zaman Ou, put

+0

ile değiştirilmeli. Teşekkürler, ama şimdi başka bir hata alıyorum. param eksik veya değeri boş: user Neden? – malworm

+0

@bg_mi Üretilen params çıktısını yayınlayabilir misiniz? – Pavan

+0

bu http://snag.gy/7b7ys.jpg ne demek istiyorsun? – malworm

İlgili konular