我跟随ryan bates屏幕投射多态关联
http://railscasts.com/episodes/154-polymorphic-association-revised?view=asciicast
我之前在Rails 3应用程序上成功完成了这个,但现在我在Rails 4上,我觉得我有强大的参数问题.....但我可能是错的
当我进入我的控制台为用户创建新事件时,它可以正常工作
a = Event.first
c = a.events.create!(name: "Hello World")
这可以在我的活动索引页面上发布和发布
当我尝试在网站上使用实际表单时,它会创建记录,但名称字段为空且空白...而且我没有收到任何错误
继承我的控制器(我基本上只是复制了Ryan Bates在网站上所做的事情)
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
这里是我的表格(非常简单,我现在只使用名字)
= form_for [@eventable, @event] do |f|
.field
= f.text_field :name
= f.submit
答案 0 :(得分: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