0

我有一个奇怪的问题。我已经断断续续地在 Rails 中编码一年了。我最近创建了一个新项目并使用了脚手架。事情进展顺利,昨天我开始实现一些喜欢的功能。现在我有一个奇怪的问题。我回滚了昨晚做的事情,但仍然有问题。第一的

 Entry belongs to user
 User has many entries

我的控制器中的条目显示方法非常标准和简单

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

但是,如果我返回条目索引,文件新条目就在那里,并且显示链接将我带到正确的位置。想法?感谢您的帮助!

4

2 回答 2

1

你的表格是什么样子的?我认为你有嵌套路线?您的表单应如下所示:

<%= form_for [@user, @entry] do |f| %>
  <% # your fields %>
<% end %>

您的表单似乎指向资源条目,而不是嵌套的资源..

于 2013-08-02T16:45:25.940 回答
1

错误消息告诉您User.find(params[:user_id])找不到具有该 ID 的用户。尝试检查服务器日志中 GET 参数的结构。

如果您的 GET 路径是/entries/20,则该路径只有一个条目 ID,并且缺少用户 ID。您可以Controller#create通过将其重定向到user_entry_path而不是entry_path.

于 2013-08-02T16:55:24.693 回答