0

別のコントローラー(登録)から(登録コントローラーから)リダイレクトするイベントコントローラーがあります。

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

ログファイルを新規からチェックアウトすると、パラメータハッシュに{"event_count":"15"}が含まれていることがわかります。

event_countが私のイベントテーブルにないことに注意してください。助言がありますか?

より詳しい情報

イベントモデルの仮想属性として、すでに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]

そして私のviews/event.html.erb

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

1 に答える 1

1

何をしようとしているのかわかりませんがevent_count、データベースに保存する場合は、イベントテーブルに列として追加する必要があります。

データベースに保存する必要がない場合はevent_count、仮想属性としてイベントモデルに追加する必要があります。このような:

class Event < ActiveRecord::Base
  attr_accessor :event_count
  attr_accessible :event_count
end
于 2012-09-12T06:28:51.280 に答える