form_for,url参数基于父级的id

时间:2013-05-20 03:28:51

标签: ruby-on-rails

我目前的路线设置正常,它们的工作原理如下:

Myapp::Application.routes.draw do
  resources :meal do
    resources :entre, :side, :desert
  end
end

在用餐索引视图中,我通过一堆部分生成:entre形式如下

<%= div_for meal do %>
  <tr>
    <td> <%= link_to "Meal #{meal.id}", meal %> </td>
    <td> <div class ="comment"><%= meal.comment %></div></td>
  <td></td>
    <td><div class ="Edit">
        <%= link_to 'Edit', edit_meal_path(meal) %>
        <%= link_to 'Destroy', meal, method: :delete, remote: true, data: { confirm:     'Are y
    </div></td>
    <td><div class ="vmaction">


      <%= form_for(meal.entres.new(params[:id])) do |f| %>
        <%= f.textfield :choice %>
        <%= f.submit "submit" %>
      <% end %>


    </div></td>
  </tr>
<% end %>

如上所示,我正在调用行

中另一个对象的视图
<%= form_for(meal.entres.new(params[:id])) do |f| %>

我正在尝试弄清楚如何添加url参数,以便根据网址,_Entres_ controller将知道哪个meal_id正在提交的内容...

我基本上希望该表单在提交说明meal_id=3

的提交时按照此行生成提交网址
http://website/meal/3/entres/new

由于

2 个答案:

答案 0 :(得分:1)

你需要在form_for中提供一顿饭以及一个新的中心。这些将获得rails以在路线中使用meal_id构建URL。

这样的事情:

<%= form_for([meal, meal.entres.new]) do |f| %>

答案 1 :(得分:1)

让我清楚一点。 是Meal has_many Entre关联吗?

你试过这个:

new entres_controller中的

@meal = Meal.find(3) #what ever you want to find out.
@entre = @meal.entres.build

并在您看来:

<%= form_for [@meal, @entre] do |f| %>