2016-03-19 17 views
0

フォームで郵便番号を取得してデータベースに保存する新しいアプリケーションを開始しました。私の問題は、作成アクションは私が何を試しても呼び出されていないように見えるということです。フォームで呼び出されないアクションを作成する

ルート:

root 'postcodes#new' 
resources :postcodes, only: [:new ,:create] 

コントローラー:postcodes_controller.rb

class PostcodesController < ApplicationController 
    def new 
    @postcode = Postcode.new 
    end 

    def create 
    @postcode = Postcode.new(postcode_params) 
    if @postcode.save 
     flash[:success] = 'Success' 
    else 
     flash[:error] = 'Error' 
    end 
    end 

    private 

    def postcode_params 
    params.require(:postcode).permit(:code) 
    end 
end 

モデル:postcode.rb

class Postcode < ApplicationRecord 
    validates :code, presence: true, uniqueness: true 
end 

ビュー:郵便番号/ new.haml

.container 
    %form 
    %fieldset.form-group 
     = form_for @postcode do |f| 
      = f.label :postcode 
      = f.text_field :code, placeholder: 'Example Postcode', class: 'form-control' 
     = f.submit 'Submit', class: 'btn btn-primary' 

私はメソッドとアクションなどform_forのオプションを渡そうとしましたが、今はルーティングエラーだと感じています。

ご協力いただければ幸いです。

ありがとうございました。

+0

*作成アクションが呼び出されていないように見える*あなたはどのように伝えますか?レコードが作成されないことをデータベースにチェックインしましたか?エラーメッセージが表示されますか?メソッドの最後にリダイレクトを定義しなかったので、 'create'メソッドはビューを持っていますか? – spickermann

+0

申し訳ありませんが私は明確にされている必要があります。フォームを送信するときにデータベースに何も追加されず、作成アクションの最上部に '' raise''を置くと、何も起こりません。 –

+0

サーバーログには何が表示されますか?エラーはありますか? – Pavan

答えて

1

あなたが経験している問題は、HAMLの結果だと思います。

form_forメソッド呼び出しの外部でフォームHTML要素を使用する必要はなく、使用する必要はありません。

form_forメソッドは、このHTML要素/タグの生成を処理します。

あなたは持っている:

.container 
    %form 
    %fieldset.form-group 
     = form_for @postcode do |f| 
      = f.label :postcode 
      = f.text_field :code, placeholder: 'Example Postcode', class: 'form-control' 
     = f.submit 'Submit', class: 'btn ban-primary' 

<form>要素を出力します。

あなたが持っている必要があります。

.container   
    = form_for @postcode do |f| 
    %fieldset.form-group 
    = f.label :postcode 
    = f.text_field :code, placeholder: 'Example Postcode', class: 'form-control' 
    = f.submit 'Submit', class: 'btn ban-primary' 
右URLとあなたの createアクションが呼び出されるように「ポスト」で埋め必要 actionmethod属性との適切 <form>タグを生成する必要があります

+0

ありがとうございました。面白いことに、私はそれが必要ではないことを知っていましたが、それがそのような問題を引き起こす可能性があることを認識していませんでした。 –

+0

同じです...犯人を見て少し驚いていました。 –

関連する問題