2016-03-28 10 views
1

私は、deviseによって生成された、モデルUserに列情報を追加しました。私は登録によってフィールド情報を記入するようにユーザーを作りたくありません。プロフィールのような他のページのコントローラを作成しましたparamsで正しい情報を取得するにはどうすればよいですか?

ページのuserinfoユーザーは自分の情報を編集できるはずです。ここで

は図である。

<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> 

アプリケーションコントローラ:

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 

私はそれを保存しようとすると、私がnilのため

未定義のメソッド `許可証」を取得する:NilClass

どうすれば修正できますか?多分この仕事をする良い方法がありますか?私は、パスワード、ユーザー名等を編集するフォーム全体を表示したくないだけの情報。 nilのための

答えて

0

未定義のメソッド `許可」:NilClass

あなたはそれが間違ってやっています。 paramsには:userinfoというキーは含まれません。 params:user => {:information => 'value'}のようになります。あなたは

#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 

以下にコードを変更する必要があり、また、あなたが 更新にあるレコードをしようとしているとして、あなたは

最後に
<%= form_for @currentUser, method: put do |f| %> 

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

を変更する必要がありますこれに対応するpostのルートをcontroller#actionに設定した場合、yそれを変更する必要がありますput

+0

ありがとうございます、しかし、私は他のエラーが表示されます。 paramが存在しないか、値が空です。ユーザ なぜそれが起こりますか? – malworm

+0

@bg_mi生成されたparamsの出力を投稿できますか? – Pavan

+0

はこれはhttp://snag.gy/7b7ys.jpgです。 – malworm

関連する問題