I am an experienced JAVA and C++ developer and I am trying to understand how rails works.
I got this code below:
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' }
and I've been searching the api that defines what I can pass inside the format.js {}
but I could not find..
first of all: what kind of statement is format.js
, is that a variable?
and most important: what attributes can I pass into format.js {} ? can you pass the direct link? I've searched over the http://api.rubyonrails.org/
respond_to do |format| format.js # actually means: if the client ask for js -> return file.js end
js
here specifies a mime-type that the controller method would send back as a response;
Default Rails mime-types.
If you try also with format.yaml
:
respond_to do |format| format.js format.yaml end
that will mean that your controller will return yml
or js
depending on what the client-side is asking;
{}
in terms of ruby is a block; If you don't specify any rails will try to render a default file from app/views/[contoller name]/[controller method name].[html/js/...]
# app/controllers/some_controller.rb def hello respond_to do |format| format.js end end
will look for /app/views/some/hello.js.erb
; // at least in Rails v. 2.3.
If you do specify 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With