我正在尝试找到我的时间表ID以传递给form_for
这是我的控制器
def show
@time_id = current_user.time_sheets.find(params[:id])
if current_user
@current = current_user.time_sheets
else
redirect_to new_user_session_path, notice: 'You are not logged in.'
end
end
在我看来,这是我的form_for:
<%= form_for(:entry, :url => {:controller => Entry, :action => 'create'}) do |f| %>
<table summary="Subject form fields">
<tr>
<th>Customer</th>
<td><%= f.text_field(:customer_name) %></td>
</tr>
<tr>
<th>Order Number</th>
<td><%= f.text_field(:order_number) %></td>
</tr>
<tr>
<th>Time In</th>
<td><%= f.text_field(:time_in) %></td>
</tr>
<tr>
<th>Time Out</th>
<td><%= f.text_field(:time_out) %></td>
</tr>
<tr>
<th>Time Sheet ID</th>
<td><%= f.hidden_field :time_sheet_id, value: @time_id.id %></td>
</tr>
</table>
<div class="form-buttons">
<%= submit_tag("Add Entry") %>
</div>
<% end %>
需要进行的是时间表ID需要传递到form_for,以便条目可以包含时间表ID。
我有用户,时间表和条目。用户has_many时间表,时间表属于用户,用户有很多时间表。条目属于时间表。
我收到此错误“无法找到没有ID的TimeSheet”
答案 0 :(得分:1)
您应该使用“嵌套资源”,例如。见这里:Rails 3: How to create a new nested resource? 您可以使用form_for([@ timesheet,@ entry])来传递时间表的id而不使用隐藏字段。如果你这样做,:url param也会过时。
答案 1 :(得分:0)
尝试添加:
<%= @time_id.id %>
输出你的变量并确保它与你的想法完全一致。如果@time_id是时间表,则应该将该变量重命名为@time_sheet。