Постоянный параметр в контроллере Rails - PullRequest
7 голосов
/ 03 августа 2011

есть ли способ сохранить (сохранить) параметры в контроллере Rails?Это должно быть передано каждому действию, затем каждому представлению и каждой ссылке.

Пример ситуации: у меня есть объект A со своим контроллером.Кроме того, у меня есть другая сущность B, которая зависит от A. Мне очень часто требуется доступ к "родительской" сущности, поэтому я бы хотел, чтобы она по-прежнему была

http://some_url/b_controller/b_action?a_entity=xyz

Ответы [ 2 ]

9 голосов
/ 03 августа 2011

Вы должны иметь возможность делать все с вашего контроллера, используя комбинацию before_filter и default_url_options:

class MyController < ApplicationController

  before_filter :set_a_entity

  def set_a_entity
    @a_entity = params['a_entity']
    # or @a_entity = Entity.find(params['a_entity'])
  end

  # Rails 3
  def url_options
    {:a_entity => @a_entity}.merge(super)
  end

  # Rails 2
  def default_url_options
    {:a_entity => @entity}
  end

end

Это не решает проблему установки начального значения @a_entity, но это можно сделать из любого места (представление, контроллер и т. д.).

Если вы хотите, чтобы этот параметр передавался в нескольких контроллерах, вы можете заменить MyController < ApplicationController на ApplicationController < ActionController::Base, и он должен работать.

Надеюсь, это поможет.

2 голосов
/ 03 августа 2011

почему бы тогда не поместить его в параметр сеанса?

session["a_entity"] = "xyz"

таким образом, вы можете получить к нему доступ и во всех других ваших контроллерах, пока не очистите его или он не истечет.

подробнее здесь:

http://api.rubyonrails.org/classes/ActionController/Base.html

...