rails3显示没有得到:user_id在一个案例中

时间:2013-08-02 16:37:43

标签: ruby-on-rails scaffolding

我有一个奇怪的问题。我已经在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链接将我带到正确的位置。思考?感谢您的帮助!

2 个答案:

答案 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中修复此问题。