背景:我有一个控制器 - 食谱,它生成我在数据库中的所有食谱,我可以点击一个来查看某个食谱的详细信息。在某个食谱视图中,我还传递了此食谱收到的所有评论。在评论信息下面,我可以对这个食谱做出新的评论。
这是一个问题:我当然有配方ID ----- @ recipe.id。当我填写所有评论信息并单击“提交”按钮时,此表单将发布到另一个控制器 - 评论。但我只是不知道如何将此页面中的食谱ID传递给Comments控制器。
食谱控制器:
def show
#For getting the ingredient info from ingredient set
@ingredientset=IngredientSet.where("recipeid=?",set_recipe.id)
@ingredients = Array.new()
i=0
@ingredientset.each do |set|
@ingredients[i]=Ingredient.find(set.ingredientid)
i+=1
end
食谱信息查看:(我只显示发表评论的部分)
<!--for adding a new comment-->
<div id="add_comment">
<%= form_for(@comment) do |f| %>
<% hidden_field .....%>
<!--Here I want to pass the @recipe.id value into the comment controller-->
<!--But I dont know should I use hidden_field or something else-->
<!--I was .net MVC developer, so I only know something like @html.hiddenfor() or @ViewBag.xxx stuff-->
<div class="field">
<%= f.label :comment %><br>
<%= f.text_field :comment %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
</div>
另外我不知道如何在评论控制器中获取值,因为我在轨道上的ruby中是全新的。
这是评论控制器:
def create
@comment = Comment.new(params[:comment])
@comment.recipeid = params[:recipeid])
end
非常感谢!
答案 0 :(得分:0)
在您的情况下,它听起来像hidden_field标签是您想要的。
因此,在您的表单中,您需要添加:
f.hidden_field :recipeid, <value>
就个人而言,如果我使用hidden_field
标记,我会寻找另一种方法来执行此操作,因为在表单提交之前可以在DOM中轻松修改这些标记。我想看看你的控制器本身是否有办法做到这一点。