Rails link_to带参数的new操作没有保存参数。

3
所以,我有两个对象,楼层(Floor),它拥有多个楼层怪物(FloorMonsters),而楼层怪物(FloorMonster)则属于一个楼层。
在Floor的展示页面中,我有一个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为nil并且程序崩溃了。我错过了什么?我找到了与我完全相同的源代码,但是我没有得到成功。这里的被接受的答案这篇博客文章在我看来做的就是我正在做的事情,但他们成功了。

你的FloorMonster新页面上有什么?根据你提供的信息,你只在你的操作中使用了FloorMonster.new,它只是创建了一个新实例,而没有持久化它。你有一个提交到创建操作的表单吗? - Marc Lainez
1个回答

0

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

= f.hidden_field :floor_id

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接