观点/反馈/ 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
views / feedbacks / searchingfeedback.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
答案 0 :(得分: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
之后,当前请求结束,并且所有实例变量都不可用于浏览器根据301 Redirect
的HTTP规范执行的请求。这是HTTP请求周期的一部分。
你可能只想做:
render :feedbackresult
这将简单地呈现feedbackresult
操作的模板。
答案 1 :(得分:0)
如果@result_feedback不是nil
,请尝试仅返回 - 您可以这样做:
Your Result found : <%= @result_feedback.name if @result_feedback %>