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
Post a Comment