- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法理解路由,控制器和视图(以及它们如何相互连接)之间的关联。
因此,我的控制器具有index
,show
,new
,create
,destroy
方法。和对应的
GET /entries(.:format) entries#index
POST /entries(.:format) entries#create
GET /entries/new(.:format) entries#new
GET /entries/:id/edit(.:format) entries#edit
GET /entries/:id(.:format) entries#show
PUT /entries/:id(.:format) entries#update
DELETE /entries/:id(.:format) entries#destroy
vote_up
或
vote_down
以及具有匹配操作名称的视图,怎么办却不起作用。
最佳答案
从一开始,这就是它的思考方式:
1)您的应用唯一要做的一件事就是响应HTTP请求。
最典型的请求是:
GET-用户在浏览器的URL栏中输入内容,然后按Enter。
POST-用户提交表单。
还有其他类型的HTTP请求,最重要的是PUT,PATCH和DELETE。 Rails遵循REST模式,这意味着它为这些HTTP动词分配了特定的含义。
2)当任何请求进入您的应用程序时,必须将其路由到Controller Action。
您的routes.rb
文件是Rails路由器(ActionDispatch)的一组指令,该指令告诉路由器将请求发送到哪里。 “标准” rails资源是作为快捷方式给出的,如下所示:
resources :things
GET /things => things#index
GET /things/:id => things#show
GET /things/new => things#new
GET /things/edit/:id => things#edit
POST /things => things#create
PUT /things/:id => things#update
DELETE /things/:id => things#destroy
resources :things
声明没有其他设置。因此,如果您希望控制器执行其他非标准动作,则必须手动添加它们。
resources :things do
member do
get 'vote_up'
end
end
/things/123/vote_up
发出GET请求,则它应该触发
ThingsController
vote_up
操作。
render
调用(即以某种格式发送回一些数据),也可以是
redirect
调用-基本上是为您发出新请求,因此您可以得到该其他请求的响应。
render :new
时,这是
render :template => :new
的快捷方式,它将加载
app/views/things/new.html.erb
(或任何其他形式)模板,从控制器(通常是您的实例变量)发送数据,并使用模板语言(erb)对其进行评估(例如haml等)。这会导致HTML字符串很大,然后控制器将其传递给浏览器。
render :text => 'Hello World'
结束控制器,甚至:
render :inline => '<!DOCTYPE html><head><title>Inline Wow!</title></head><body>Mind blown.</body></html>'
vote_up
这样的自定义操作,您可能根本不想显示模板,而只是重定向。因此,您可能会有这样的事情:
ThingsController < ApplicationController
def vote_up
@thing = Thing.find(params[:id])
@thing.vote_up
redirect_to @thing
end
end
link_to 'Vote up this thing!', vote_up_thing_path(@thing)
things/123/vote_up
的链接,如果有人单击它,它将在
vote_up
的
ThingsController
操作中运行代码,然后重定向回显示视图。
= link_to 'Vote up this thing', vote_up_thing_path(@thing), :id => 'vote-up-button'
$(function(){
$('a#vote-up-button').click( function(event){
event.preventDefault();
$.ajax({
url: this.attr('href'),
type: 'GET',
success: function(){...},
error: function(){...}
});
});
});
respond_to
块在单个控制器动作中处理多种请求格式,但从实用性的角度来看,当您选择让路由仅响应一种格式或另一种格式时,我发现事情运行得更加顺利。
关于ruby-on-rails - Rails:路线, Controller , View ,噢,我的感叹号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16115644/
在查看 tslint 规则的源代码时,我发现了以下语句: if (node.parent!.kind === ts.SyntaxKind.ObjectLiteralExpression) {
在查看 tslint 规则的源代码时,我发现了以下语句: if (node.parent!.kind === ts.SyntaxKind.ObjectLiteralExpression) {
我正在处理这个项目,并试图弄清楚前后的感叹号是什么意思。 import ICHING from '!json!constants/iching_deoxy.json'; 最佳答案 这是一个 inlin
我正在输入的内容: INSERT INTO reviews VALUES ('', title='dragon ball z', date='2012-12-01 23:06:03', usernam
在github的jade文档中,谈到了缓冲技术: 为了安全起见,默认情况下会对 = 缓冲的代码进行转义,但是要输出未转义的返回值,您可以使用 !=: p!= aVarContainingMoreHTM
我有两个变量用于包含或排除系统文件(使用最小匹配 glob 语法,其中 ! 代表排除)。 var systemFiles = ['node_modules/**/*', '.git/**/*']; v
我正在尝试切换键“1”和“!”使用 Karabiner,但我无法在任何地方找到感叹号的关键代码。不可能吗? 最佳答案 据我所知,! 没有唯一的键码。相反,它仅在系统接收到 Shift_R + 1 时输
在 Windows 7 上,文件夹搜索框中使用的以下查询无法过滤文件夹中带有“!”的文件。其中感叹号。 filename:! 请问有什么办法可以做这个搜索吗?谢谢。 最佳答案 在您的具体示例中 fil
我有一个带有CENTOS 6.4和WHM 11.38.2。的VPS。我刚刚将WHM更新为最新版本,现在当我转到phpMyAdmin时,在表名旁边和“查询”选项卡中“查询”一词之前,有一个带有白色感叹号
例如: http://localhost/#!/login.html 我不需要“!”。我将如何删除它? eg:http://localhost/#/login.html 这是我的路由器代码: //
https://stackoverflow.com/a/2787560/645703说: ($!) is strict function application. That is, it evalua
我已经看到它现在使用过一两次,其中 ! 标记放在属性名称之前。例如: !overflow: hidden; (还有,see here) 谁能阐明它的目的是什么? 最佳答案 我找不到任何关于它的信息,但
我已经看到它现在使用过一两次,其中 ! 标记放在属性名称之前。例如: !overflow: hidden; (还有,see here) 谁能阐明它的目的是什么? 最佳答案 我找不到任何关于它的信息,但
该程序的目标是获取用户输入并将其转换为 ascii 文本。 代码按其应有的方式工作,但不包含逗号、句点、感叹号或问号。 我尝试将:!、?、' 和逗号作为单独的列表包含在内,并尝试在输入中调用它。但我并
我有州列表,我已经添加了州名搜索过滤器。我有这样的数组: stateList : [{name: 'abc', area:500},{name: '!def', area:500}] 我有 与 ng-
让我们从正常行为开始。当我执行 Read-Host没有提示,我可以输入一个以感叹号开头的字符串: PS C:\> Read-Host | Foreach-Object { Write-Host 'En
我只是拼错了命令 git status 和 !git status 控制台显示它开始将最后克隆的存储库克隆到文件夹状态... 我的问题是,这个命令是什么意思,它有什么用途吗? 最佳答案 在 bash
这个问题在这里已经有了答案: What does an exclamation mark mean after the name of a function? (1 个回答) 关闭 2 年前。 Ju
我一直在 Magnolia code examples 中的 FreeMarker 代码末尾看到感叹号.例如: ${content.header!} 感叹号叫什么,它有什么作用? 最佳答案 感叹号称为
我环顾四周,找不到任何东西可以让我的脚本正确使用特殊字符(例如 ! 或 ; 或 ^) 在文件路径或文件名中。 我的脚本确实有效,但前提是上述字符不在任何扫描的文件夹或文件名中。如果任何文件夹或文件具有
我是一名优秀的程序员,十分优秀!