2016-06-20 7 views
0

現在、私はVisitというメソッドを持っており、基本的に訪問カウンタをSubscriberに追加しています。このメソッドは、Subscriberがphone_numberをフォームに入力するとトリガーされます。私は単にSusbcriber.find_by(params[id]).last.visitのように見えるアクティブなレコードクエリを作成したい(これはBTWでは機能しません)。うまくいけば、私がそこでやろうとしていることを得ることができます。基本的には、最後にチェックインした人に電話番号を呼んでください。分かりやすくするために私のコードを示します。アクティブレコードクエリ - レール

CONTROLLER方法:あり

def search 
    @subscriber = Subscriber.new 
end 

def visit 
    @subscriber = Subscriber.find_by(params[:phone_number]) 
    if @subscriber 
    @subscriber.visit ||= 0 
    @subscriber.visit += 1 
    @subscriber.save 
    flash[:notice] = flash[:notice] = "Thank You #{@subscriber.first_name}. You have #{@subscriber.days_till_expired} until renewal" 
    redirect_to subscribers_search_path(:subscriber) 
else 
    render "search" 
end 
end 

あなたは、加入者が自分の電話番号を入力したときにトリガされます方法を見ることができます。私は単にその人をコンソールで呼びたいと思う。 CURRENTLY動作していない

CONTROLLER方法:

def create 
    @subscriber = Subscriber.find(params[:subscriber_id]) 
    @comment = @subscriber.comments.build(comments_params) 
    if @comment.save 
    flash[:notice] = "Thank you!" 
    redirect_to subscribers_search_path(:comments) 
    else 
    render "new" 
    end 
end 

これは単に自分の電話番号を入力し、加入者を見つけるために、新しいクエリを必要とする方法です。

詳細情報が必要な場合は教えてください。ありがとうございました!

答えて

1

コメントに基づいてより包括的に回答を編集しています。ここでは多くの問題が発生しているようですが、一歩一歩手をかけてこのステップを再構築する必要があります。テストを実行したり、少なくともデバッグツールを使って期待通りの結果を得ていることを確認してください(byebug、pry、または単に「puts」と「inspect」の使い分け)。

find_by方法は、モデルの主キーを使用している場合は、あなたがして、行を検索するために使用しようとしている属性だけでなく、属性

@subscriber = Subscriber.find_by(phone_number: params[:phone_number]) 

の値を指定する必要があり、ちょうどfindを使用してください:

@subscriber = Subscriber.find(params[:id]) 

コントローラアクションを呼び出す場合は、常にparamsが存在する必要があります。残りのコードで進む前に、パラメータを調べてみてください。あなたが期待しているものを得ていることを確認してください。そうでない場合は、ビューコードを評価してください。

+0

私はあなたが思っているのが好きですが、 'NameError:未定義のローカル変数またはメソッド' params for main:Object'というエラーが発生していますか? – Bitwise

+0

これは、メソッドに 'params'変数がないことを示しています。あなたはあなたのコントローラでこれを取得していますか?もしそうなら、あなたのコントローラの定義や呼び出しに何か問題があります。これは何のコントローラーアクションですか、訪問するか、作成しますか?そして、あなたはその行動をどのように呼びますか?あなたのビューコードは、フォーム提出をどのようにしますか? – hightempo

+0

また、Railsのバージョンはこれにありますか? Rails 4+の場合は、強力なパラメータを使用する必要があります。 – hightempo

関連する問題