Подтвердить что ты не робот

Rails reply_to format.js API

Я опытный разработчик JAVA и С++, и я пытаюсь понять, как работают рельсы.

Я получил следующий код:

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' }

и я искал api, который определяет, что я могу передать внутри format.js {}, но я не смог найти.

в первую очередь: какой оператор format.js, является ли это переменной?

и самое главное: какие атрибуты я могу передать в format.js {}? вы можете передать прямую ссылку? Я искал http://api.rubyonrails.org/

4b9b3361

Ответ 1

respond_to do |format|
  format.js # actually means: if the client ask for js -> return file.js
end

js здесь задает тип mime, который метод контроллера отправит обратно как ответ;
Default mails-типы Rails.
Если вы также попробуете format.yaml:

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

это означает, что ваш контроллер вернет yml или js в зависимости от того, что запрашивает клиентская сторона;

{} в терминах ruby ​​- block; Если вы не укажете, какие рельсы будут пытаться отобразить файл по умолчанию из 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

Ответ 2

Я считаю, что это был URL, который вы искали:

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

Это также может быть полезно для некоторых, чтобы увидеть, что вы можете фактически преобразовать js непосредственно в метод format.js, если у вас, например, есть только одна строка js, которую вы хотите вернуть, и вы don 't хотят отложить файл RJS, например controller_action_name.js.erb:

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