Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails设计用于未注册用户或软用户访问联系人表单_Ruby On Rails_Devise_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails Rails设计用于未注册用户或软用户访问联系人表单

Ruby on rails Rails设计用于未注册用户或软用户访问联系人表单,ruby-on-rails,devise,ruby-on-rails-5,Ruby On Rails,Devise,Ruby On Rails 5,我有一个联系表单,即使是未注册的用户(访问者)也可以访问该表单,并且会在提交联系表单时发送邮件 遵循frails和Desive,我已覆盖当前用户并验证用户!在registrations controller中,谢天谢地,它重定向到localhost:3000/访问者,但索引页没有加载,Desive抛出了一个错误:“Completed 401 Unauthorized”。如果我在application controller中粘贴与它取代registrations controller相同的方法,它

我有一个联系表单,即使是未注册的用户(访问者)也可以访问该表单,并且会在提交联系表单时发送邮件

遵循frails和Desive,我已覆盖当前用户并验证用户!在registrations controller中,谢天谢地,它重定向到localhost:3000/访问者,但索引页没有加载,Desive抛出了一个错误:“Completed 401 Unauthorized”。如果我在application controller中粘贴与它取代registrations controller相同的方法,它甚至不加载localhost:3000,因为soft_令牌不是用户中的一列。但我不想将软用户转换为注册用户,因此不需要软令牌

我应该如何加载联系人表单

这是我的密码。蒂亚。 访客/#索引

访客/管理员

class VisitorsController < ApplicationController
def index
end

def contact
    h = JSON.generate({ 'name' => params[:name],
                        'email' => params[:email],
                        'subject' => params[:subject],
                        'message' => params[:message] })

     VisitorMailer.contact_email(@name, @email, @subject, @message).deliver_later(wait_until: 10.hours.from_now)
    redirect_to :root_url, notice: "Message sent"
end
class VisitorsControllerparams[:name],
'email'=>params[:email],
'subject'=>params[:subject],
'message'=>params[:message]})
VisitorMailer。联系电子邮件(@name、@email、@subject、@message)。稍后发送(等待时间:10。小时。从现在开始)
重定向到:root\u url,注意:“消息已发送”
结束

好的,我自己解决了这个问题,就像之前的操作一样:在应用程序控制器中对用户进行身份验证,以便它应用于所有控制器。但是,使用此SO链接,我解决了它:

post 'visitors/contact', to: 'visitors#contact' 
match 'visitors' => 'visitors#index', :as => :visitors, :via => :get
devise_for :users, :controllers => {registrations: "devise_override/registrations"}
class VisitorsController < ApplicationController
def index
end

def contact
    h = JSON.generate({ 'name' => params[:name],
                        'email' => params[:email],
                        'subject' => params[:subject],
                        'message' => params[:message] })

     VisitorMailer.contact_email(@name, @email, @subject, @message).deliver_later(wait_until: 10.hours.from_now)
    redirect_to :root_url, notice: "Message sent"
end