ruby-on-rails - rails respond_to format.js API

标签 ruby-on-rails ruby syntax

我是一名经验丰富的 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 将根据客户端的要求返回 ymljs

{} 就 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/

相关文章:

ruby-on-rails - 带 Mongoid 的 Rails 引擎

ruby-on-rails - 需要请求中的国家名称或 ip_address

c++ - 在 C++ 模板中使用尖括号会带来哪些语法问题?

syntax - 如何在~/.lldbinit中编写多行宏?

ruby-on-rails - 即使我没有更改任何属性,如何强制记录 self 保存

ruby-on-rails - "down"迁移何时有用?

Ruby:代理模式,减少方法调用

ruby - 启动没有前缀 "Ruby"的 Ruby

ruby-on-rails - acts_as_taggable_on 与集合

c - 奇怪的 C 语句作为结构中的字段