【发布时间】:2018-03-22 19:28:52
【问题描述】:
我试图通过使用 Rails 表单创建一个简单的项目来挑战我的学习,但是我真的陷入困境并且无法找到任何似乎可以在线帮助的信息。
我想要做什么:
我想创建一个没有模型的 Rails 应用程序(因此没有数据持久性)。简单地说,我希望用户输入一个 Soundcloud URL,然后将其传输到控制器,在那里我可以执行更多逻辑。本质上,我真的想了解 Rails 表单和 rails 中的控制器之间的联系。我花了一整天时间阅读有关 HTML 表单的内容,以及在谷歌上搜索这个确切的问题,但并没有完全理解它。
我知道有不同的表单助手,但我似乎无法理解的是如何在没有模型的情况下使用它们。我现在最大的问题是我无法将表单值传输到控制器。我以为我了解 RESTful 路由、PUT/GET 等。但这让我非常沮丧,因为我似乎无法理解这一点。任何建议都非常感谢。
代码:
下面是我正在努力解决的具体代码,目前当我提交表单时它崩溃了,给我一个基于路线的错误,这就是我卡住的地方。
问题代码在视图中的_form.html.erb文件中找到:
<%= form_tag '/show' do %>
<%= label_tag(:soundcloud_url, "Please enter a valid Soundcloud Artist URL:") %>
<%= text_field_tag(:soundcloud_url) %>
<%= submit_tag("Let's go!") %>
<% end %>
Routes.rb:
Rails.application.routes.draw do
resources :soundcloud_query
root 'soundcloud_query#index'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
错误:
Routing Error
No route matches [POST] "/show"
rake 路由输出:
Prefix Verb URI Pattern Controller#Action
soundcloud_query_index GET /soundcloud_query(.:format) soundcloud_query#index
POST /soundcloud_query(.:format) soundcloud_query#create
new_soundcloud_query GET /soundcloud_query/new(.:format) soundcloud_query#new
edit_soundcloud_query GET /soundcloud_query/:id/edit(.:format) soundcloud_query#edit
soundcloud_query GET /soundcloud_query/:id(.:format) soundcloud_query#show
PATCH /soundcloud_query/:id(.:format) soundcloud_query#update
PUT /soundcloud_query/:id(.:format) soundcloud_query#update
DELETE /soundcloud_query/:id(.:format) soundcloud_query#destroy
root GET / soundcloud_query#index
Github 链接:
https://github.com/gaelant/simple_soundcloud_app/commit/09c4c4df524bb721a0f472b4378cd8c1ff18177f
注意:我知道这是一个基本问题,但我对此感到非常困惑。我知道上面代码的编写方式是不正确的,但是我尝试了很多不同的东西,我就是不明白发生了什么,或者如果没有模型,这是否可能。
【问题讨论】:
-
请将您的整个错误和
routes.rb的相关部分(因为您显然遇到了路由错误)添加到您的问题中。 -
抱歉,添加了请求的详细信息。
-
获取正确的路由url使用调用
rails routes -
哦,对了。表单执行
post并且您正在尝试使用/show网址。如果您在控制台中执行rake routes,您将看到您没有post :show的路由。你是/create网址将接受post。 -
你好!所以我试着把 create 放进去,但我得到了这个:没有路由匹配 [POST] "/create" 要查看我的 rake 路由的详细输出,我把它放在上面的问题中
标签: ruby-on-rails