1

部署到 Heroku 后出现问题。尝试访问 /sign_ups/new 我在日志中看到了这一点。

2012-12-21T21:36:21+00:00 app[web.1]: Started GET "/sign_ups/new" for ... at 2012-12-21 21:36:21 +0000
2012-12-21T21:36:21+00:00 app[web.1]: 
2012-12-21T21:36:21+00:00 app[web.1]: ActionController::RoutingError (No route matches {:controller=>"sign_ups", :action=>"referral", :id=>nil}):
2012-12-21T21:36:21+00:00 app[web.1]:   app/helpers/sign_up_helper.rb:3:in `referral_link'
2012-12-21T21:36:21+00:00 app[web.1]:   app/views/sign_ups/show.html.erb:10:in `_app_views_sign_ups_show_html_erb__2538320905600276551_36877720'
2012-12-21T21:36:21+00:00 heroku[router]: at=info method=GET path=/sign_ups/new host=blah.herokuapp.com fwd=... dyno=web.1 queue=0 wait=0ms connect=2ms service=19ms status=404 bytes=728
2012-12-21T21:36:21+00:00 app[web.1]:   app/controllers/sign_ups_controller.rb:10:in `new'
2012-12-21T21:36:21+00:00 app[web.1]: 
2012-12-21T21:36:21+00:00 app[web.1]: 
2012-12-21T21:36:21+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=blah.herokuapp.com fwd=... dyno=web.1 queue=0 wait=0ms connect=2ms service=4ms status=304 bytes=0

但是,如果我在 heroku 上运行 rake 路线,我会看到这一点。

  referrals GET  /r/:id(.:format)        sign_ups#referral
   sign_ups POST /sign_ups(.:format)     sign_ups#create
new_sign_up GET  /sign_ups/new(.:format) sign_ups#new
    sign_up GET  /sign_ups/:id(.:format) sign_ups#show
       root      /                       sign_ups#new

即使在生产模式下运行,一切都可以在本地正常运行。有什么我想念的想法吗?

sign_ups_controller.rb

class SignUpsController < ApplicationController
  def new
    @sign_up = SignUp.find_by_remember_token(cookies[:remember_token])
    if @sign_up.nil?
      @sign_up = SignUp.new
    else
      render :show
    end
  end

  def create
    @sign_up = SignUp.new(params[:sign_up])
    if @sign_up.save
      cookies.permanent[:remember_token] = @sign_up.remember_token
      flash[:notice] = 'Thanks for signing up!'
      redirect_to root_path
    else
      render action: "new"
    end
  end

  def referral
    @sign_up = SignUp.new
    render action: "new"
  end
end

sign_ups_helper.rb

module SignUpHelper
  def referral_link(referral_id)
    URI::join(root_url, referrals_path(referral_id))
  end
end
4

1 回答 1

0

解决了这个问题。它与迁移有关。我在单独的迁移中添加了 refer_id,但没有设置默认值。

于 2013-01-14T20:07:28.270 回答