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

意见/反馈/ searchedfeedback.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 回答
0

如果@result_feedback 不是,请尝试仅返回它nil- 你可以这样做:

Your Result found  :  <%= @result_feedback.name if @result_feedback %>
于 2013-10-15T06:45:31.903 回答