将表单放入不同控制器的其他视图中

时间:2017-11-10 17:46:17

标签: ruby-on-rails ajax

我创建了一个拥有用户的应用,用户可以拥有多个玩家,每个玩家都可以拥有多种能力。现在在我的玩家展示视图中,我可以看到有关玩家和他的能力的信息,但我也希望有一个表格来创建/更新该玩家的能力。如何实现从能力控制器到玩家显示视图的视图,以便我可以通过ajax直接从那里创建/编辑和删除他的能力?我正在考虑将from.html中的new.html.erb变为局部,然后将其渲染到show.html.erb中但是我将什么放在form_for中以便rails知道它应该与不同的模型和控制器进行通信?这是正确的做法吗?

1 个答案:

答案 0 :(得分:0)

首先,在播放器中添加关联模型(Ability)的form_for没有问题。您可以将表单的一部分组合起来,并为其所有功能进行渲染。

在控制器中,

@abilities = @player.abilities

在节目中,

#Some code to show player details
<% @abilities.each do |ability| %>
<%= render 'ability', ability: ability%> #Pass local variable ability to partial
<% end %>

在init中使用带有AJAX的form_for标签进行部分更新以更新信息。此外,您可以使用

定义form_for标记的“操作”
form_for(ability,:url => url_for(:controller => 'abilities', :action => 'update')

你可以将部分能力放在与能力控制器相对应的能力文件夹中,并在上面的渲染语句中给出它的相对路径:

<%= render '/abilities/ability', ability: ability %>