Rails link_to new,参数不保存参数

时间:2014-08-12 21:00:13

标签: ruby-on-rails ruby parameters link-to

所以,我有两个对象,Floor,has_many FloorMonsters,FloorMonster属于floor。

我在Floor的show页面中有一个link_to new_floor_monster_path,我打算将Floor id作为参数传递。 link_to目前看起来像这样:

= link_to "Add a Monster to this Floor", new_floor_monster_path(floor_id: @floor.id)

在FloorMonster的控制器中,新方法如下:

def new
  @floor_monster = FloorMonster.new(floor_id: params[:floor_id])

  respond_to do |format|
    format.html # new.html.erb
    format.json { render json: @floor_monster }
  end
end

当我点击链接时,URL会显示参数:

http://.../floor_monsters/new?floor_id=4

但是当我保存时,floor_id为零,程序崩溃。我在这里错过了什么?我已经找到了与我所做的完全相同的来源,但我没有取得任何成功。据我所知,The accepted answer herethis blog post正在做我正在做的事情,但他们设法让它发挥作用。

1 个答案:

答案 0 :(得分:0)

我假设您在表单中公开新的FloorMonster以允许设置其他属性然后保存它。要将floor_id属性传递给create操作,您需要为表单添加一个字段。如果您不希望它被人看到或可编辑,请使用hidden_field。在您的表单中,添加:

= f.hidden_field :floor_id