私は経験豊富な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
つまり、コントローラーはクライアント側の要求に応じてyml
またはjs
を返します。
{}
は、Rubyは ブロック です;指定しない場合、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
これがあなたが探していたURLだと思います:
https://apidock.com/Rails/ActionController/MimeResponds/InstanceMethods/respond_to
これは、たとえば、返される小さな1行の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