1

ビュー/フィードバック/searchfeedback.html.erb:

私の検索フォーム:

 <%= form_tag(search_feedback_feedback_path(:id), :method => :get) do %>
     <%= text_field_tag :token_no %>
     <%= submit_tag 'Search' %>
 <% end %>

app/config/routes.rb ファイル:

resources :feedbacks do   
  member do
    get :search_feedback
  end
end

match '/feedbackresult' => 'feedbacks#searchedfeedback' 

feedbacks_controller.rb ファイル内:

def search_feedback
  if params[:token_no]
    @result_feedback = Feedback.find_by_token(params[:token_no])
    redirect_to feedbackresult_path
  end    
end

ビュー/フィードバック/検索したfeedback.html.erb:

Your Result found  :  <%= @result_feedback.name %>

ここで私は次のエラーを取得しています:

NoMethodError in Feedbacks#searchedfeedback

Showing C:/Users/PROJ/app/views/feedbacks/searchedfeedback.html.erb where line #1 raised:
undefined method `name' for nil:NilClass
4

2 に答える 2

3

インスタンス変数を設定した後、 「」@result_feedbackを使用してリダイレクトしていますredirect_to

def search_feedback
  if params[:token_no]
    @result_feedback = Feedback.find_by_token(params[:token_no])
    redirect_to feedbackresult_path # <-- the current request is over!
  end
end

redirect_toヘッダー301付きの応答を送信します。Location

コントローラ アクションが を呼び出した後redirect_to、現在のリクエストは終了し、すべてのインスタンス変数は、ブラウザが の HTTP 仕様に従って実行するリクエストで使用できなくなります301 Redirect。これは、HTTP 要求サイクルの一部です。

あなたはおそらく単純にやりたい:

render :feedbackresult

アクションのテンプレートを単純にレンダリングしますfeedbackresult

于 2013-10-15T07:27:26.013 に答える