我是新手,我尝试创建一个应用程序来列出船租赁公司,并允许用户对它们进行评论。首先,我想允许用户创建Renters。我使用omniauth进行Facebook连接。它适用于生产,但不适用于localhost。
当我尝试添加租借者时,在租用者视图上的提交按钮之后,我有错误:
Started POST "/renters" for ::1 at 2016-02-10 11:20:00 +0100
Processing by RentersController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"xxx...xxx", "renter"=>{"name"=>"bastia", "address"=>"bastia", "latitude"=>"", "longitude"=>"", "website"=>"", "email"=>"", "phone"=>"", "user_id"=>""}, "commit"=>"Valider"}
(0.3ms) BEGIN
(0.4ms) ROLLBACK
Completed 500 Internal Server Error in 34ms (ActiveRecord: 0.7ms)
OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
app/controllers/renters_controller.rb:44:in `create'
这是renters_controller.rb
class RentersController < ApplicationController
before_action :set_renter, only: [:show, :edit, :update, :destroy]
def create
@renter = Renter.new(renter_params)
if @renter.save
gflash notice: "Le loueur a bien été enregistré"
redirect_to '/'
else
gflash :now, notice: "Une erreur est survenue."
render :new
end
end
def renter_params
params.require(:renter).permit(:name, :address, :website, :email, :phone, :review, :latitude, :longitude, :user_id)
end
end
和模型renter.rb
class Renter < ActiveRecord::Base
geocoded_by :address
after_validation :geocode
reverse_geocoded_by :latitude, :longitude
after_validation :reverse_geocode # auto-fetch address
end
有人能帮助我吗?
答案 0 :(得分:0)
要使Facebook连接在开发环境中工作,您必须首先在Facebook Developers帐户中创建一个测试应用程序:
设置:
- 应用领域:localhost
- 网站网址:http://localhost:3000/
然后在您的应用中输入app id
和app secret
(如果您使用费加罗,则在您的application.yml中),如下所示:
application.yml
development:
OAUTH_FACEBOOK_ID: 'facebook-id'
OAUTH_FACEBOOK_SECRET: 'facebook-secret'
然后你可以在你的devise.rb
中使用它devise.rb
config.omniauth :facebook, ENV['OAUTH_FACEBOOK_ID'], ENV['OAUTH_FACEBOOK_SECRET'],
scope: 'public_profile', image_size: {height: 1600}, info_fields: 'name, id, first_name,
last_name, gender, hometown, cover, email, link' # list of permissions
答案 1 :(得分:0)
它适用于生产,但不适用于localhost ......
在localhost上进行开发时,您可以通过创建CA,为localhost创建CSR,然后让CA签署CSR来为公共设备建模。最后,您在dev Web服务器上使用证书,并在本地信任库中安装CA.
成为您自己的CA意味着事情将在浏览器和其他用户代理中“正常工作”。如果您尝试使用自签名证书路由(如下所述),那么大多数用户代理都可以,但浏览器将是一个痛点。
有关成为您自己的CA并为开发人员工作站颁发证书的信息,请参阅How do you sign Certificate Signing Request with your Certification Authority?
您也可以创建自签名证书以避免CA和CSR的内容。在这种情况下,您将告诉Ruby信任localhost的自签名证书而不是CA.
对于大多数用户代理来说,你应该没问题,但浏览器将是一个痛点,因为它们已经违背了自签名证书。
要创建自签名证书,请参阅How to create a self-signed certificate with openssl?和How can I generate a self-signed certificate with SubjectAltName using OpenSSL?
您不应该这样做: :use_https => false
。