【问题标题】:Error on rendering show action渲染显示动作时出错
【发布时间】:2013-08-02 12:52:26
【问题描述】:

我正在尝试通过传递参数来呈现显示操作,但是当没有用户登录时,没有呈现显示页面。这是我的控制器:

class QrCodesController < ApplicationController

  def show
    @user = User.find_by_qr(params[:id])
    if @user.nil?
        redirect_to root_path
    end
  end
end

这是我的观点:

This is the qr-code page of <%= @user.fname %> <%= @user.lname%>

但是,当任何用户登录时,显示页面都会完美呈现。

rails 服务器还显示完美渲染的显示动作:

Started GET "/qr_codes/9M9JZLiemrNdS_g90mZ14w" for 127.0.0.1 at 2013-08-02 18:29:55 +0545
Processing by QrCodesController#show as HTML
  Parameters: {"id"=>"9M9JZLiemrNdS_g90mZ14w"}
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."qr" = '9M9JZLiemrNdS_g90mZ14w' LIMIT 1
  Rendered qr_codes/show.html.erb within layouts/application (0.7ms)
  Rendered layouts/_shim.html.erb (0.0ms)
  Web Load (0.3ms)  SELECT "webs".* FROM "webs" WHERE "webs"."id" = 2 LIMIT 1
  Rendered layouts/_header.html.erb (3.2ms)
  Rendered layouts/_footer.html.erb (0.0ms)
Completed 200 OK in 54ms (Views: 52.4ms | ActiveRecord: 0.5ms)

我正在使用 rails 3.2.13、ruby 1.9.3p429 和 devise 3.0.0。用户模型不是由设计生成的。

请帮忙。

编辑: 这是触发显示操作的链接:

http://localhost:3000/qr_codes/9M9JZLiemrNdS_g90mZ14w

【问题讨论】:

  • 当用户未登录并尝试打开显示页面时遇到什么错误?
  • 如果它重定向到另一个动作,请检查应用控制器中是否有任何前置过滤动作。
  • 没有错误,只是空白页。
  • @Mohanraj:它仍然在同一页面中,没有被重定向。
  • @Powers:这是输出:#<0x007f33284fd0a0>

标签: ruby-on-rails render show


【解决方案1】:

由于打印时@user 等于#,它显然不等于nil,并且不会发生重定向。您需要更改 find_by_qr 中的代码以在未找到时返回 nil,或者确定该方法用于表示未找到的其他方式,并更改您的条件以使用它。

【讨论】:

    【解决方案2】:

    试试这个:

    @user = User.find_by_qr(params[:id])
    if  @user
      respond_to do |format|
        format.html 
      end
    else
      redirect_to root_path
    end
    

    【讨论】:

    • 没有区别。页面仍然是空白的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2021-06-10
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    相关资源
    最近更新 更多