2017-01-18 7 views
0

私はコンタクトフォームを持っていますが、これは未登録のユーザー(訪問者)でもアクセスでき、コンタクトフォームの送信時にメールが送信されます。登録されていないユーザーまたはソフトユーザーがコンタクトフォームにアクセスするようにレールが設定されています

https://codediode.io/lessons/364-gradual-engagement-with-Now frails-and-deviseに続いて、私はcurrent_userとauthenticate_userを上書きしました!そして、感謝して、それはlocalhost:3000/visitorsにリダイレクトされますが、インデックスページは読み込まれず、 "401 Unauthorized"というエラーをスローしています。登録コントローラに代わるものと同じ方法をアプリケーションコントローラに貼り付けると、 softhostがユーザーの列ではないため、localhost:3000もロードされません。しかし、私はソフトユーザーを登録ユーザーに変換したくないので、soft_tokenは必要ありません。

はどのようにお問い合わせフォームをロードする必要がありますか?

ここに私のコードです。 TIA。 訪問者/#インデックス

<%= bootstrap_form_for @contact do |f| %> 
    <div class="row"> 
    <div class="col-sm-3"> 
     <%= f.hidden_field :soft_token, value: current_user.soft_token %> 
     <%= f.text_field :name, placeholder: "Enter your name", label: "Your Name" %> 
     <%= f.email_field :email, prompt_text: "Mention email for contacting you back." %> 
     <%= f.select(:subject, :subject_id, options_for_select([['Site Feedback', 1], ['Ask a Question', 2], ['Report a problem', 3]])) %> 
     <%= f.text_area :message, placeholder: "Enter your question.", label: "Message" %> 
    </div> 
    </div> 
    <div class="row"> 
    <%= f.submit "Submit", class: "btn btn-primary btn-outline btn-sm pull-right" %> 
    </div> 

routes.rbを:

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

visitors_controller

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 

答えて

関連する問題