2016-10-13 21 views
0

私の_follow.html.rbフォームで送信しようとすると、次のエラーが表示され、なぜパラメータが渡されないのかわかりません。どのようにParameterMissingエラーを解決するには?

私が得た:

ActionController :: ParameterMissingはがUserControllerの#アップデートで

paramが存在しないか、値が空である:ユーザー

def user_params 
     params.require(:user).permit(:name, :email, :password, 
            :password_confirmation, :followed_user) 
    end 

は、これは、要求

Parameters: 

{"utf8"=>"✓", 
"_method"=>"patch", 
"authenticity_token"=>"LOnA6CA3yQYaCDqme6OkxPZlkBRvybhYANreU3BxuV8=", 
"followed_user"=>"#<User:0x007f4e902fcf20>", 
"commit"=>"Follow", 
"id"=>"57f2b32b717f01297dda1759"} 
です

ベローはビューです

<%= form_for(current_user) do |f| %> 
    <div><%= hidden_field_tag :followed_user, @user %></div> 
    <%= f.submit "Follow", class: "btn btn-primary" %> 
<% end %> 

そして、これは私があなたの代わりにのための「現在利用者」の「@user」を持っているあなたのフォームが必要だと思う私のUserモデル

class User 
    include Mongoid::Document 
    include ActiveModel::SecurePassword 
    has_many :microposts, dependent: :destroy 
    has_and_belongs_to_many :followers, :class_name => 'User', :inverse_of => :following 
    has_and_belongs_to_many :following, :class_name => 'User', :inverse_of => :followers 


    field :name, type: String 
    field :email, type: String 
    field :password_digest, :type => String 
    field :admin, type: Boolean, default: false 
    field :created_at, type: Date, default: Time.current 

    has_secure_password 


    def feed 
    microposts 
    end 

# Follows a user. 
    def follow(other_user) 
    following << other_user 
    end 

    # Unfollows a user. 
    def unfollow(other_user) 
    following.delete(other_user) 
    end 

    # Returns true if the current user is following the other user. 
    def is_following?(other_user) 
    following.include?(other_user) 
    end 

end 

答えて

0

にフォームチェンジ

<%= form_for(current_user) do |f| %> 

にあなたはそれがuserのparamを提出することを確認するためにhidden_field_tagを生成するブロックから 'F' 変数を使用する必要があります。

<%= f.hidden_field :followed_user_id %> 

しかし、あなたは対処する必要がある他の問題があるかもしれません。これは、ユーザーインスタンスのメソッドで、succeed_user_idの取得と設定を処理する必要があります。次のようなことがたくさんあることを考慮すれば、それは意味をなさない。

また、これはupdateメソッドのリクエストを送信しますが、それはあなたが望むものではない可能性があります。代わりに、followingsコントローラcreateメソッドにリクエストを送信することができます。これはRESTfulになります。しかしそれは別の質問です。これはあなたを始めるはずです。

0

です。

ので

<%= form_for(@user) do |f| %> 
関連する問題