路由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 
+0

你可以上传你的路由文件 – widjajayd

更新routes.rb使用collection代替resources得到/users/comments像路径

resources :users do 
    collection do 
    get 'comments' 
    end 
end