Rails 4-Railscast#154多态关联

瑞奇安

我跟随瑞安·贝茨(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")

这有效并在我的事件索引页面上发布

但是,当我尝试在网站上使用实际表单时,它会创建记录,但名称字段为nil和空白...而且我没有收到任何错误

这是我的控制器(我基本上只是复制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
莫默

请尝试以下操作:使用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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章