簡體   English   中英

rails respond_to format.js API

[英]rails respond_to format.js API

我是一名經驗豐富的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指定控制器方法作為響應發回的mime類型;
默認Rails mime-types
如果你也嘗試使用format.yaml

respond_to do |format|
  format.js
  format.yaml
end

這意味着你的控制器將返回ymljs具體取決於客戶端要求的內容;

就紅寶石而言, {}是一個 ; 如果你沒有指定任何rails將嘗試從app / views / [控制器名稱] / [控制器方法名稱]呈現默認文件。[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中。

如果你確實指定了阻止:

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

我相信這是你要找的網址:

https://apidock.com/rails/ActionController/MimeResponds/InstanceMethods/respond_to

這也可能有助於一些,一看就知道你其實可以直接在format.js方法渲染的js,比如你只需要你想返回一個小行的js語句,你不想推遲到像controller_action_name.js.erb這樣的RJS文件:

respond_to do |format|
  format.html { redirect_to new_admin_session_path }
  format.js   { render :js => "window.location='#{ new_admin_session_path }'" }
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM