ruby on rails - "No route matches [POST]" despite Resources in my Routes file -


i creating rails app, , need form function in 1 of views , submit data table without use of scaffold (like do).

now, place comment form going appear in 1 view within blog folder. need allow user put in comment, save table, , return same page.

while pretty commonplace error, confused because specifying 2 things seem critical: creating resources in routes file form, , second, using create method in controller.

in blog.html.erb, happens in form:

<%= form_for :cements |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 %> 

then, in controller, have create method should redirect original page, wanted.

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 

good news: comment form renders in view. bad news: when submit, getting error: no route matches [post] "/blog".

my expectation issue routes file; however, have resources method in there:

rails.application.routes.draw resources :posts resources :cements resources :blogs

the naming convention same controller file, confused why error happening. ideas?

:cement not object symbol, how rails determine post form? if inspect form see form action /blog (current page url).

you should either do

<%= form_for :cements, url: cements_path |f| %> 

or

<%= form_for cement.new |f| %> 

both of above generate form action /cements, submit cementscontroller create action, see in case want submit blogscontroller use appropriate routes(blogs_path). can use url in second version also.


Comments