私はRailsアプリケーションを作成しています。私のビューの1つで機能し、足場を使わずにテーブルにデータを送信するフォームが必要です。私は通常やる)。私のルートファイル内のリソースにもかかわらず、ルートが[POST]と一致しません "
ここで、このコメントフォームが表示される場所は、blog
フォルダ内の1つのビューです。ユーザーがコメントを入力してテーブルに保存してから、同じページに戻る必要があります。
これはかなり一般的なエラーですが、フォームのルートファイルにリソースを作成し、次にコントローラーでcreateメソッドを使用するという2つの事柄を指定しているので、混乱します。 blog.html.erbで
、これはこのフォームで起こる:私が望んでいたとして、その後
<%= form_for :cements do |f| %>
<div class="form-group">
<div class="field">
<%= f.label :post %><br>
<%= f.text_area :post, class: "form-control" %>
</div>
</div>
<h5 id="username">Username</h5>
<div class="form-group">
<div class="field">
<%= f.text_field :username, class: "form-control" %>
</div>
</div>
<%= f.hidden_field :slug, :id => "hiddenPicker"%>
<div class="actions">
<%= f.submit "Save", class: "btn btn-success-outline" %>
</div>
<% end %>
、私のコントローラでは、私は、元のページに戻ってリダイレクトする必要があります作成する方法を持っています。
blogs_controller.rb
class BlogsController < ActionController::Base
def index
@posts = Post.order('updated_at DESC').all
@comments = Cement.all
end
def blog
@posts = Post.where(slug: params[:id]).all
@comments = Cement.all
end
def create
@cements= Cement.new(story_params)
@cements.save
redirect_to(:back)
end
private
def story_params
params.require(:cements).permit(:username, :post, :slug)
end
end
グッドニュース:コメントフォームは、ビューでレンダリングします。悪いニュース:私が提出するとき、私はこのエラーを受け取ります:ルートは[POST] "/ blog"と一致しません。
これは私のルートファイルの問題です。しかし、私はそこにすでにresources
方法があります:投稿 リソース:
Rails.application.routes.drawは リソースを行う 資源をセメント:ブログ
命名規則は、私のコントローラファイルと同じです私はなぜこのエラーが起こっているのか混乱しています。何か案は?
どのように ':セメント'を初期化しましたか?あなたのルートにもアクションブログを定義してください。 'リソース:ブログは 'blog'を取得します:on::collection end' – mrvncaragay