Rails:如何在非活动记录模型中存储表单参数?

时间:2009-07-14 13:15:24

标签: ruby-on-rails

我想将模板中的参数存储起来。由于我不希望模型使用任何数据库,因此它不会从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 :(得分:0)

即使你正确地设置了你的问题,你打算如何坚持这个?一份文件?

我认为在使用具有自定义持久性的花哨模型之前,深入理解ActiveRecord是一种更好的方法

答案 1 :(得分:0)

看一下这篇文章:

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

它展示了如何创建一个类,该类将从传入的Hash中动态创建一个类。

答案 2 :(得分:0)

您可能想要查看Ryan Bates的Railscast,了解如何创建非ActiveRecord模型 http://railscasts.com/episodes/121-non-active-record-model

...但是我建议如果你正在思考这个问题,那么从你对Sam的答案的评论中听起来就像你可能有另一个RESTful资源在工作 - 即你实际上并不想使用QuestionsController ...而是与你实际创建的内容有关(你提到的方法调用)。您仍然可以将问题对象初始化为该过程的一部分。