所以,我有两个对象,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 here和this blog post正在做我正在做的事情,但他们设法让它发挥作用。
答案 0 :(得分:0)
我假设您在表单中公开新的FloorMonster以允许设置其他属性然后保存它。要将floor_id
属性传递给create操作,您需要为表单添加一个字段。如果您不希望它被人看到或可编辑,请使用hidden_field
。在您的表单中,添加:
= f.hidden_field :floor_id