【发布时间】:2017-09-13 04:31:07
【问题描述】:
我在嵌入式 Ruby 中成功使用了一个如下所示的表单:
<%= 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 %>
但是,当我尝试将其放入 Bootstrap 时,我遇到了问题。然后我尝试制作一个更简单的 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]“/users/1/cmets/new/user/cmets”。我正在使用嵌套资源,终端中的 Rails 路由告诉我 user_cmets 路径“POST”等同于 user/user_id/cmets 和 Create controller 操作。
在我的 HTML 表单中,如果我输入 action="user/cmets",那么结果路径是 "/users/1/cmets/new/user/cmets",如果我输入 action="cmets",那么路径是 "/ cmets”,如果我输入“/”,则路径是“/”。我试图到达的路径是“user/cmets”,但似乎无法通过我的 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
【问题讨论】:
-
你能上传你的路由文件吗
标签: ruby-on-rails forms routing