Rails: Как сохранить параметры формы в неактивной модели записи? - PullRequest
2 голосов
/ 14 июля 2009

Я хочу сохранить параметры из формы в модели. Поскольку я не хочу, чтобы модель использовала какую-либо базу данных, она не наследуется от ActiveRecord :: Base. Я думаю, это должно выглядеть примерно так:

# in view:
<% form_for :question, :url => {:action => "ask"} do |f| %>
  <%= f.text_field(:q) %>
  <%= submit_tag %>
<% end %>

# in controller:
def ask
  # I want this to magically set all variables in @question using 
  # values from params.
  @question = params[:question]
end

# in model:
class Question
  attr_accessor :q

  def initialize
    @q = ""
  end
end

Но, потратив на это полтора дня, кажется, что это неправильный способ сделать это. Любые предложения будут высоко оценены.

Ответы [ 3 ]

0 голосов
/ 14 июля 2009

Посмотрите на эту статью:

http://pullmonkey.com/2008/1/6/convert-a-ruby-hash-into-a-class-object

Показывает, как создать класс, который будет динамически создавать класс из переданного в Hash.

0 голосов
/ 15 июля 2009

Возможно, вы захотите проверить Railscast Райана Бейтса о создании модели, отличной от ActiveRecord. http://railscasts.com/episodes/121-non-active-record-model

... однако я бы сказал, что если вы думаете об этом RESTful, это звучит из вашего комментария к ответу Сэма, как будто у вас может быть другой ресурс RESTful в работе - т.е. вы на самом деле не хотите использовать QuestionController ... но вместо этого что-то связанное с тем, что вы на самом деле создаете (вызов метода, который вы упомянули). Вы все еще можете инициализировать ваш объект Question как часть этого процесса.

0 голосов
/ 14 июля 2009

Даже если вы правильно зададите свой Вопрос, как вы планируете продолжать это? Файл?

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

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