2016-06-17 22 views
0

このエラーが発生しました ページを読み込むとこのエラーが発生します。なぜこれが起こっているのでしょうか?これはユーザーと関係がありますか?NoMethodError in users#paypal_verification

ActionView::Template::Error (undefined method `verifications' for #<Array:0x007ffc8e78f590>): 
 
    1: <%= form_for([@user, @user.verifications.new]) do |f| %> 
 
    2: \t <%= f.email_field :paypal_email, :class => 'form-control', :placeholder => "Paypal Email", id: 'Pemail' %> 
 
    3: <%= f.text_field :paypal_firstname, :class => 'form-control', :placeholder => "Paypal FirstName", id: 'PfirstName' %> 
 
    4: <%= f.text_field :paypal_lastname, :class => 'form-control', :placeholder => "Paypal LastName", id: 'PlastName' %> 
 
    app/views/users/paypal_verification.html.erb:1:in `_app_views_users_paypal_verification_html_erb___3907504954927390416_70361349334300'
ユーザーコントローラ

def index 

     @search = User.ransack(params[:q]) 
     @user = @search.result.order("created_at DESC").to_a.uniq 

     @country = User.uniq.pluck(:country) 
     @city = User.uniq.pluck(:city) 
     @school = User.uniq.pluck(:school) 
     @major = User.uniq.pluck(:major) 


     @results = @search.result 
     @arrUsers = @results.to_a 

     @revisers = Reviser.all 

    end 

def paypal_verification 

    @user.find(params[:user_id]) 
end 



    def show 
     @user = User.find(params[:id]) 
     @users = User.all 
     @revisers = Reviser.all 


    end 

検証コントローラ

:私のURLが http://localhost:3000/users/4/paypal_verification

エラーログです

def create @user = User.find(params[:user_id]) @verification = current_user.verifications.create(verification_params) redirect_to @user.edit if @verification require 'paypal-sdk-adaptiveaccounts' @api = PayPal::SDK::AdaptiveAccounts::API.new(:device_ipaddress => "127.0.0.1") # Build request object @get_verified_status = @api.build_get_verified_status({ :emailAddress => "<%= current_user.paypal_email %>", :matchCriteria => "NAME", :firstName => "<%= current_user.paypal_firstname %>", :lastName => "<%= current_user.paypal_lastname %>" }) # Make API call & get response @get_verified_status_response = @api.get_verified_status(@get_verified_status) # Access Response if @get_verified_status_response.success? @get_verified_status_response.accountStatus @get_verified_status_response.countryCode @get_verified_status_response.userInfo else @get_verified_status_response.error end params.permit! status = params[:accountStatus] verification = Verification.find(params[:paypal_email]) if status == "VERIFIED" verification.update_attributes paypal_verified: true else verification.update_attributes paypal_verified: false verification.destroy end else redirect_to @user.edit end end private def verification_params params.require(:verification).permit(:user_id, :paypal_firstname, :paypal_lastname, :paypal_email, :paypal_verified) end 

paypal_verificationのHTML

<div> 
 
\t <h>Hello</h> 
 
<%= form_for([@user, @user.verifications.new]) do |f| %> 
 
\t <%= f.email_field :paypal_email, :class => 'form-control', :placeholder => "Paypal Email", id: 'Pemail' %> 
 
<%= f.text_field :paypal_firstname, :class => 'form-control', :placeholder => "Paypal FirstName", id: 'PfirstName' %> 
 
<%= f.text_field :paypal_lastname, :class => 'form-control', :placeholder => "Paypal LastName", id: 'PlastName' %> 
 
<%= f.text_field :paypal_verified, :class => 'form-control', id: 'Pverified'%> 
 

 
<%= f.submit "verify", class: "btn btn-primary" %> 
 
<% end %> 
 
</div>

routes.rbを

devise_for :users , 
     :path => '' , 
     :path_names => {:sign_in => 'login', :sign_out => 'logout', :edit => 'profile'}, 
     :controllers => {:omniauth_callbacks => 'omniauth_callbacks', 
       :registrations => 'registrations' 
       } 


resources :users, only: [:index, :show] do 

end 
resources :revisers 
resources :photos 
resources :pages 

#make sure to change this to user!!! instead of reservations!!! 
resources :reviser do 
    resources :reservations, only: [:create] 
end 


resources :user do 
    resources :verifications, only: [:create] 
end 


get '/users/:id/paypal_verification' => 'users#paypal_verification' 
+0

このエラーは、配列に対して '検証 'を呼び出すことを示しています。私は '@ user'の値をチェックすべきだと言っています。それを理解できない場合は、routes.rbと完全なusers_controller、特にpaypal_verificationアクションを投稿する必要があります。 – oreoluwa

+0

私は私のポストと私もまたdeviseを使って編集しました!それが物事を変えるかどうかわからない? –

答えて

1

私はあなたのエラーがであなたのset_user方法から来ることができたと思います、あなたはそれを上に示していませんが。

はあなたがそれを可能に変えることができる:あなたのビュー/ユーザー/ paypal_verification.html.erbで

class UsersController < ApplicationController 
    before_action :set_user, except: [:index] 

    ... your other actions here 

    def paypal_verification 
    @verification = @user.verifications.new 
    end 

    private 
    def set_user 
     @user = User.find(params[:id]) 
    end 
end 

を、あなたはそれからかもしれない:

<div> 
    <h>Hello</h> 
<%= form_for([@user, @verification]) do |f| %> 
    <%= f.email_field :paypal_email, :class => 'form-control', :placeholder => "Paypal Email", id: 'Pemail' %> 
<%= f.text_field :paypal_firstname, :class => 'form-control', :placeholder => "Paypal FirstName", id: 'PfirstName' %> 
<%= f.text_field :paypal_lastname, :class => 'form-control', :placeholder => "Paypal LastName", id: 'PlastName' %> 
<%= f.text_field :paypal_verified, :class => 'form-control', id: 'Pverified'%> 

<%= f.submit "verify", class: "btn btn-primary" %> 
<% end %> 
</div> 

は、それが動作するかどうか私に教えてください。

+0

ありがとう!あなたは天才です! –

関連する問題