我是一名经验丰富的 JAVA 和 C++ 开发人员,我正在努力了解 Rails 的工作原理。
我得到以下代码:
respond_to do |format|
if @line_item.save
format.html { redirect_to store_url }
format.js { render :json => @line_item, :mime_type => Mime::Type.lookup('application/json'),
:callback => 'javascriptFunction' }
我一直在搜索定义我可以在 format.js {}
中传递的内容的 api,但我找不到..
首先:format.js
是什么语句,是变量吗?
最重要的是:我可以将哪些属性传递给 format.js {}?你能通过直接链接吗?我搜索了 http://api.rubyonrails.org/
最佳答案
respond_to do |format|
format.js # actually means: if the client ask for js -> return file.js
end
js
在这里指定 Controller 方法将作为响应发回的 mime 类型;
Default Rails mime-types .
如果您也尝试使用 format.yaml
:
respond_to do |format|
format.js
format.yaml
end
这意味着您的 Controller 将根据客户端的要求返回 yml
或 js
;
{}
就 ruby 而言是一个 block ;
如果您未指定任何 Rails 将尝试从 app/views/[contoller name]/[controller method name].[html/js/...] 呈现默认文件
# app/controllers/some_controller.rb
def hello
respond_to do |format|
format.js
end
end
会寻找/app/views/some/hello.js.erb
;//至少在 Rails v. 2.3 中是这样。
如果你指定 block :
respond_to do |format|
# that will mean to send a javascript code to client-side;
format.js { render
# raw javascript to be executed on client-side
"alert('Hello Rails');",
# send HTTP response code on header
:status => 404, # page not found
# load /app/views/your-controller/different_action.js.erb
:action => "different_action",
# send json file with @line_item variable as json
:json => @line_item,
:file => filename,
:text => "OK",
# the :location option to set the HTTP Location header
:location => path_to_controller_method_url(argument)
}
end
关于ruby-on-rails - rails respond_to format.js API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13545148/