2013-09-26 109 views
1

林繼polymoprhic協會軌道4 - railscast#154多態關聯

http://railscasts.com/episodes/154-polymorphic-association-revised?view=asciicast

我已經在一個Rails 3應用程序成功地這樣做過,但現在on Rails的4 IM和我感覺瑞恩·貝茨抓屏像即時通訊有問題具有很強的參數.....但我可能是錯的

當我進入我的控制檯來爲用戶創建一個新的事件它的工作原理

a = Event.first 
c = a.events.create!(name: "Hello World") 

這個工作,當我嘗試使用實際的形式,它創造了記錄,但名稱字段是零和空白的網站上我的事件索引頁

howwever上的帖子...我沒有得到任何錯誤

我的繼承人控制器(IM基本上只是複製瑞恩·貝茨確實在網站上)

class EventsController < ApplicationController 
before_filter :load_eventable 
def index 
    @eventable = Admin.find(params[:admin_id]) 
    @events = @eventable.events 
end 

def new 
    @event = @eventable.events.new 
end 

def create 
    @event = @eventable.events.new(params[:events]) 
    if @event.save 
    redirect_to [@eventable, :events], notice: "Event created." 
    else 
    render :new 
    end 
end 

private 
    def load_eventable 
    resource, id = request.path.split('/')[1,2] 
    @eventable = resource.singularize.classify.constantize.find(id) 
    end 

    def events 
    params.require(:events).permit(:name, :address, :city, :state, :zip, :date, :time, :admin_id) 
    end 
end 

這裏我的形式(非常簡單,只用名字現在IM)

= form_for [@eventable, @event] do |f| 
    .field 
    = f.text_field :name 
    = f.submit 
+0

當表單發送到服務器的名稱正在發送params [:events]? – Dhaulagiri

回答

2

請嘗試以下操作:使用您定義的event_params方法而不是params散列創建新事件。我改變了名稱,使其更容易混淆。

class EventsController < ApplicationController 

    ... 
    def create 
    @event = @eventable.events.new(event_params) 
    if @event.save 
     redirect_to [@eventable, :events], notice: "Event created." 
    else 
     render :new 
    end 
    end 

    private 
    ... 

    def event_params 
     params.require(:events).permit(:name, :address, :city, :state, :zip, :date, :time, :admin_id) 
    end 
end