2016-11-26 5 views
0

コントローラーコード:データがデータベースに格納されていないので、それがルビのレール上の入力データのIDにルーティングされていないのですか?

class ItemsController < ApplicationController 

    def show 
    end 

    def new 
    end 

    def create 
     @item = Item.new(item_params) 

     @item.save 
     redirect_to @item 
    end 

    private 
    def item_params 
    params.require(:item).permit(:mobile, :company) 
    end 

end 

New.html.erbコード

<%= form_for :item , url: items_path do |f| %> 
    <p> 
    <%= f.label :mobile %><br> 
    <%= f.text_field :mobile %> 
    </p> 

    <p> 
    <%= f.label :company %><br> 
    <%= f.text_field :company %> 
    </p> 

    <p> 
    <%= f.submit %> 
    </p> 
<% end %> 

もう一つ、私が必要とするために、私はプライベートメソッドで正しいパラメータを使用していないと思います。もしそうなら、私は何を使うべきか教えてください。

+0

あなたは '@item.save works'を想定してはいけません。保存が成功した場合は 'redirect_to @ item'だけです。失敗した場合は' new 'をもう一度表示し、new.html.erbにエラーメッセージを表示するのが一般的です。なぜ失敗したのかを知ることができます。 – David

+0

'item'のフォーム宣言でインスタンス変数とは対照的にシンボルを使用する理由は何ですか? – David

+0

railsガイドではインスタンス変数が使用されていますが、それらをフォローしています.......レールガイドのサイトでも同様にこの方法で使用しています...私は:articleをthis:itemに変更しました。ポイント1の – Thinkerzz

答えて

0

1.)は、新しいアクションで@item = Item.new(item_params)を書きます。

2.)これで問題が解決しない場合は、ファイル名をNew.html.erbからnew.html.erb に変更します。列名が間違っている可能性があります。これが役に立つと願っています

+0

)なぜあなたはそれをしますか?新しい行動には何も掲載されません。 – David

関連する問題