Rails:从一个新的传递params创建

时间:2012-09-12 04:29:38

标签: ruby-on-rails controller

我有一个事件控制器,我从另一个控制器(注册)重定向     (来自注册管理员):

format.html { redirect_to new_event_path(:event_count => 15) }

(Event controller)

def new
    logger.info params
    @event = Event.new(:event_count => params[:event_count])
    ......

def create
    @event = Event.new(params[:event])

and inside views/events/new.html.erb
<%= f.hidden_field :event_count %>

但是,当我尝试运行它时,我收到以下消息:

unknown attribute: event_count

请注意,当我查看日志文件时,从new,我可以看到参数hash包含在其中{“event_count”:“15”}

请注意,event_count不在我的events表中。有什么建议吗?

更多信息

我的Event模型中已经有event_count作为虚拟属性:

attr_accessible :event_count

这是一个仅在运行时使用的值,永远不会存储在DB中。最初我使用的会话变量传递了这个值,但我想知道是否有更简洁,更安全的方法来完成这项工作。

什么有效:

我删除了attr_accessor:event_count形式我的Even模型。

在事件控制器中:

def new
    @event_count = params[:event_count]
    @event = Event.new

def create
    .....
    @event_count = params[:event][:event_count]

和我的观点/ event.html.erb

<%= f.hidden.field :event_count, :value => @event_count %>

1 个答案:

答案 0 :(得分:1)

我不确定您要做什么,但如果您想将event_count存储在数据库中,您显然必须将其作为列添加到您的事件表中。

如果没有必要将其存储在数据库中,则必须将event_count作为虚拟属性添加到事件模型中。像这样:

class Event < ActiveRecord::Base
  attr_accessor :event_count
  attr_accessible :event_count
end