路由Rails中形成
问题描述:
我在嵌入的Ruby看起来像这样使用的形式成功:路由Rails中形成
<%= form_for :comment, url: user_comments_path do |c| %>
<%= c.text_field :location %>
<%= c.text_field :title %>
<%= c.text_field :body %>
<%= c.submit ("Submit") %>
<% end %>
然而,当我试图把这个变成引导我碰到了问题。然后我试图做一个简单的HTML表单是这样的:
<form accept-charset="UTF-8" action="user/comments" method="post">
<input id="comment_location" name="comment[location]" type="text"/>
<input id="comment_title" name="comment[title]" type="text"/>
<input id="comment_body" name="comment[body]" type="text"/>
<input name="commit" type="submit" value="Create"/>
</form>
...但我碰到了同样的错误信息:没有路由匹配[POST]“/用户/ 1 /评论/新/用户/注释”。我正在使用嵌套资源,终端中的Rails路由告诉我,user_comments路径'POST'等同于user/user_id/comments和Create controller操作。
在我的HTML表单中,如果我输入action =“user/comments”,那么结果路径是“/ users/1/comments/new/user/comments”,如果我输入action =“comments” /评论“,如果我输入”/“则路径是”/“。我试图达到的路径是“用户/评论”,但似乎没有办法通过我的HTML表单。
我绞尽脑汁,但我不明白为什么会这样。任何帮助将非常感激!谢谢
ps。路线是这样的:
Rails.application.routes.draw do
get 'sessions/new'
get 'welcome/index'
root 'welcome#index'
get 'user' => 'users#show'
get 'login', to: 'sessions#new'
post 'login', to: 'sessions#create'
delete 'logout', to: 'sessions#destroy'
get "log_out" => "sessions#destroy", :as => "log_out"
get "log_in" => "sessions#new", :as => "log_in"
get "sign_up" => "users#new", :as => "sign_up"
root :to => "users#new"
resources :users do
resources :comments
end
resources :sessions
end
答
更新routes.rb
使用collection
代替resources
得到/users/comments
像路径
resources :users do
collection do
get 'comments'
end
end
你可以上传你的路由文件 – widjajayd