2016-04-19 6 views
1
  • ルビー2.2.4
  • のRails 4.2.6
  • のPostgreSQL 9.5

私は、単純なモデルを保存しようとしているが、私していますフォームを送信すると、私のブラウザのURLはこの "http://localhost:8080/notes/new?utf8=%E2%9C%93&authenticity_token=z0cyVNfUKYWDSDASDWFFZ96zj29UTtDYe8dLlKrI6Mbznb2SrTWNm%2BQ91D2s2AASD2345Fl3fTOneCC2dNg%3D%3D&note%5Btitulo%5D=ddddddd&note%5Bconteudo%5D=dddddddddddddddddd&commit=Create"Rubyは - モデルを保存すると、ブラウザのGet URLを示し

私はこれについて興味があります他のプロジェクトは、同じ方法、同じルートを持っている、唯一の違いは、1つの列を持つモデルですが、正常に動作します。

def change 
    create_table :notes do |t| 
     t.text :titulo 
     t.text :conteudo 
     t.timestamps null: false 
    end 

マイコントローラ:

def new 
    @note = Note.new 
    end 

    def create 
    @note = Note.new(note_params) 
    if @note.save 
     redirect_to '/' 
    else 
     render 'new' 
    end 
    end 

    private 
    def note_params 
     params.require(:note).permit(:titulo,:conteudo) 
    end 

notes_controller.rb私のフォーム

<%= form_for(@note) do |f| %> 
     <div class="field"> 
      <%= f.label :titulo %><br> 
      <%= f.text_area :titulo %> 
      <%= f.label :conteudo %><br> 
      <%= f.text_area :conteudo %> 
     </div> 
     <div class="actions"> 
      <%= f.submit "Create" %> 
     </div> 
     <% end %> 

私のルート

Rails.application.routes.draw do 
    root 'notes#index' 
    get 'notes/new' => 'notes#new' 
    post 'notes' => 'notes#create' 

は、私がこの記事を見たRails form issuing GET request instead of POST request

私のためには機能しません。

編集:

私はアンソニー・E、彼の答えのおかげで、私は戻ってコードに見て、私は、フォーム内のフォームを持っていることを実感しましたそれを修正します。外側のフォームはapplication.html.erbにありました。

ありがとうございます。

+0

あなたが得ているHTMLフォームタグを共有していただけますか? – jandresrodriguez

答えて

3

Railsは、モデルから適切なフォームルートを推測することはできません。 routes.rbをで

resources :notes, only: [:new, :create, :index] 

この機知ルーティングを使用することは簡単かもしれ、また

form_for @note, url: "/notes", as: :note, html: { method: :post } do |f| 
end 

:フォームのURLを設定し、明示的に試してみて、あなたのform_for方法を提出次のルートを作成します:

GET /notes/new # Maps to NotesController#new 
POST /notes  # Maps to NotesController#create 
GET /notes  # Maps to NotesController#index 
+0

ネストされたリソースを正しく使用できますか? –

+0

Railsがモデルとルートを関連付ける方法を持っている限り、それは問題ではないと思います。これは 'url_for()'を確認することで確認できます。例えば ​​'url_for(注)'は '/ notes'を返すべきです。リソースがネストされていなければ、実際はもっと簡単です。 –

関連する問題