2016-10-11 2 views
0

Rails 4.1.0アプリケーションで働いています。cloud9 IDEです。 (投稿後の確認メッセージがありません

https://manual-coder-rails/contacts?utf8=%E2%9C%93&contact%5Bname%5D=Nick&contact%5Bemail%5D=victorysupplys%40gmail.com&contact%5Bcomments%5D=Nice+web&commit=Submit

私はフィールドには情報を入力しない:私は、お問い合わせフォームページでfields: Name, Email, Commentsのテスト情報を入力し、no「をメッセージ送信し」確認してアドレスバーに提出し、以下の情報が表示クリック空白)、空白の情報が再びNO「エラー」確認メッセージ、アドレスバーに表示されていない提出し、クリックされた:私は、コンソールにbundle exec rails cContact.allを入力

https://manual-coder-rails/contacts?utf8=%E2%9C%93&contact%5Bname%5D=&contact%5Bemail%5D=&contact%5Bcomments%5D=&commit=Submit

、何のエントリはここにリストされていないといませんエントリがデータベースに保存されます。

2.3.0:001> Contact.all
接触荷重(2.9ms)、 "連絡先を" SELECT * "連絡先"

> => #<ActiveRecord::Relation []> 

から私は。私のコードで何が問題なのかを理解しようとしましたが、いくつかの変更を加えましたが役に立たなかったのです。誰かが私に気付かないかもしれない。ここでは閲覧や助言のための私のコードは次のとおりです。

Contacts_controller.rb

class ContactsController < ApplicationController 
    def new 
    @contact = Contact.new 
    end    

    def index 
    end 

    def create 
    @contact = Contact.new(contact_params) 
    if @contact.save 
     name = params[:contact][:name] 
     email = params[:contact][:email] 
     body = params[:contact][:comments] 
     ContactMailer.contact_email(name, email, body).deliver 
     flash[:success] = "Message sent." 
     redirect_to new_contact_path 
    else 
     flash[:danger] = "Error occured, message has not been sent." 
     redirect_to new_contact_path 
    end 
    end 

    private 
    def contact_params 
    params.require(:contact).permit(:name, :email, :comments) 
    end 
end 

routes.rbを

Rails.application.routes.draw do 
    resources :contacts, only:[:new, :create], path_names: { new: ""} 
    get '/about' => 'pages#about' 
    root 'pages#home' 

application.html.erb

<div class="container"> 
    <% flash.each do |key, value| %> 
    <div class="alert alert-success", role="alert"<% key %>"Message sent!"> 
     <% value %> 
    </div> 
    <div class="alert alert-danger", role="alert"<% key %>"Error occured, message not sent!"><% value %> 
    </div> 
    <button type="button", class="close", data-dismiss="alert", aria-label="Close"><span aria-hidden="true"></span>&times;></span></button> 
    <%= value %> 
    <% end %> 
</div> 
<%= yield %> 

+0

あなたのすべてのフラッシュを見るには<%= flash.inspect%>を試してください。また、flash.now [:success]を設定して、それが役立つかどうか確認してください。 –

+0

@AndrewWei変更を適用しましたが、まだ確認メッセージが表示されず、データベースに保存されません。 – Theo

+0

モデルにエラーがあるためデータベースに保存していない場合。 'puts @ contact.errors.inspect'のエラーを表示します。 –

答えて

0

場合私はyを理解する私たちの質問は正しく、あなたはフラッシュがエラーで表示されないことを述べています。 :dangerはデフォルトのフラッシュキーではありません。

  1. フラッシュを含むビューを明示的に:dangerをチェックするためのアップデート、または

  2. :alert代わりの:dangerを使用するようにコントローラを変更する:あなたはするか必要があります。

関連する問題