我有一个奇怪的问题。我已经在Rails中编写了一年,一年又一年的编码。我最近创建了一个新项目并使用了脚手架。事情进展顺利,周六我开始实施一些有利的功能。现在我有一个奇怪的问题。我回滚了昨晚所做的事情,但仍然有问题。第一
Entry belongs to user
User has many entries
我的控制器中的我的Entry show方法非常标准和简单
def show
@user = User.find(params[:user_id])
@entry = @user.entries.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render :json => @entry }
end
end
当我从条目索引
中的普通链接查看条目时<%= link_to 'Show', user_entry_path(@user, entry) %>
我带我去了应该去的地方:
/users/4/entries/11
当我创造新事物时仍然看起来不错
/users/4/entries/new
直到我点击“创建条目”或提交按钮
<div class="actions">
<%= f.submit %>
</div>
然后转到
/entries/20 ...with the error:
ActiveRecord::RecordNotFound in EntriesController#show
Couldn't find User without an ID
如果我回到条目索引,那么文件新条目就在那里,show链接将我带到正确的位置。思考?感谢您的帮助!
答案 0 :(得分:1)
您的表单如何? 我认为你有嵌套路线?您的表单应如下所示:
<%= form_for [@user, @entry] do |f| %>
<% # your fields %>
<% end %>
您的表单似乎指向资源输入,而不是嵌套的资源..
答案 1 :(得分:1)
错误消息告诉您User.find(params[:user_id])
找不到具有该ID的用户。尝试检查服务器日志中的GET参数的结构。
如果您的GET路径为/entries/20
,则路径只有条目ID且缺少用户ID。您可以通过将其重定向到Controller#create
而不是user_entry_path
来在entry_path
中修复此问题。