我正试图掌握Rails,而且我一直在努力获得一个8个问题的多项选择问题测验。
我想我理解MVC方面的事情。来自浏览器的请求来自控制器。它要求模型中的信息,将其发送到视图并将内容返回给浏览器(如果我错了,请纠正我)。
我不明白(非常清楚,至少)网页如何“知道”链接到哪里。我认为,当你生成一个资源时,你会得到许多映射到路径的路由。我不明白这些路径何时相关。
有人可以向我解释(如有必要,一步一步)设计表单中的提交按钮如何“知道”链接到哪里?
到目前为止,我的表格看起来像这样:
<%= form_for([current_user]) do |f| %>
<p>
<%= f.check_box :quiz_answers %>
</p>
<p>
<%= f.submit("Get my results!") %>
</p>
<% end %>
我在那里看不到任何名称是路径或路线的名字。那么,如何生成链接?
我检查过rake路线,但我不认为我很欣赏那个列表的重要性。如果有人可以解释其背后的意思,那就太棒了。
答案 0 :(得分:0)
我会尝试解释它。
您可以通过网页发送几种类型的方法: -得到 -POST -删除 -put
通过链接获取发送参数。您可以在URL中查看其参数,例如www.google.ba?you_are=user,you_are是参数,其值是user。
Post通过包发送参数,因此您无法在网址中看到任何内容,但信息仍然存在。
其他方法是用于休息服务的POST方法的变体。
对于你的问题,devise默认创建一些在routes.rb中不清晰可见的路由。您的网页上的任何请求都会转到routes.rb,检查它应该委派给哪里,然后将其发送到相应的控制器。 Controller然后将参数做一些逻辑(将其委托给服务和其他东西),为show准备模型,然后将其委托给模板。然后,将包含所有信息(呈现)的模板发送到Web浏览器。
有一点需要注意,资源或设计为每个方法创建相应操作的默认操作。在这种情况下,您只需要设置模型,它就知道在哪里委派它。
以下是我的设计路线(其中一些是自定义的):
new_user_session GET /users/sign_in(.:format) user_sessions#new
user_session POST /users/sign_in(.:format) user_sessions#create
destroy_user_session DELETE /users/sign_out(.:format) user_sessions#destroy
user_password POST /users/password(.:format) passwords#create
new_user_password GET /users/password/new(.:format) passwords#new
edit_user_password GET /users/password/edit(.:format) passwords#edit
PATCH /users/password(.:format) passwords#update
PUT /users/password(.:format) passwords#update
cancel_user_registration GET /users/cancel(.:format) users#cancel
user_registration POST /users(.:format) users#create
new_user_registration GET /users/sign_up(.:format) users#new
edit_user_registration GET /users/edit(.:format) users#edit
PATCH /users(.:format) users#update
PUT /users(.:format) users#update
DELETE /users(.:format) users#destroy
user_confirmation POST /users/confirmation(.:format) confirms#create
new_user_confirmation GET /users/confirmation/new(.:format) confirms#new
GET /users/confirmation(.:format) confirms#show
在终端中使用rake routes命令查找所有路由。