Ruby on rails 将参数附加到窗体

Ruby on rails 将参数附加到窗体,ruby-on-rails,Ruby On Rails,在我的应用程序中,micropost被简单地称为“项目”。在每个用户的“显示”页面上,应该有一个表单,用于创建属于该用户的新“项目” 我在制作这样的表格时遇到了麻烦 提交表单时,将触发以下控制器操作: @user = User.find_by(name: params[:name]) @user.items.create(item_params) redirect_to 'root' 顺便说一下,“item_params”方法是 params.require(:item).permit(:ti

在我的应用程序中,micropost被简单地称为“项目”。在每个用户的“显示”页面上,应该有一个表单,用于创建属于该用户的新“项目”

我在制作这样的表格时遇到了麻烦

提交表单时,将触发以下控制器操作:

@user = User.find_by(name: params[:name])
@user.items.create(item_params)
redirect_to 'root'
顺便说一下,“item_params”方法是

params.require(:item).permit(:title,:content,:user\u id)

我在第二行上出错了。错误是

nil:NilClass的未定义方法“items”

我在rails控制台中检查了是否可以通过首先按名称选择一个用户来创建一个新项目

@user=user.find_by(名称:“tester1”)

然后使用以下语句为其创建一个项目:

@user.items.create(标题:“new\u item\u title”,内容:“new\u item\u content”)

新项目按预期创建。不过,我无法解释浏览器错误


编辑

该表单位于“show_user”上。以下是该页面的HTTP请求日志:

Started GET "/center/show_user?utf8=%E2%9C%93&name=tester&commit=Search" for 12
.0.0.1 at 2014-03-19 11:46:51 -0700
Processing by CenterController#show_user as HTML
  Parameters: {"utf8"=>"√", "name"=>"tester", "commit"=>"Search"}
  ←[1m←[35mUser Load (1.0ms)←[0m  SELECT "users".* FROM "users" WHERE "users"."
ame" = 'tester' LIMIT 1
  Rendered center/show_user.html.erb within layouts/application (2.0ms)
Completed 200 OK in 23ms (Views: 18.7ms | ActiveRecord: 1.0ms)
表单位于此页面上。以下是随表格提交而发送的请求:

Started POST "/center/show_user" for 127.0.0.1 at 2014-03-19 11:47:14 -0700
Processing by CenterController#create_item_owned as HTML
  Parameters: {"utf8"=>"√", "authenticity_token"=>"P6mb63rhTHx6Q17zhfu4WXErG5Pb0
8t0d/L1RppKAl0=", "item"=>{"title"=>"uno", "content"=>"uno1"}, "commit"=>"Save I
tem"}
  ←[1m←[36mUser Load (1.0ms)←[0m  ←[1mSELECT "users".* FROM "users" WHERE "users
"."name" IS NULL LIMIT 1←[0m
Completed 500 Internal Server Error in 4ms

NoMethodError (undefined method `items' for nil:NilClass):
  app/controllers/center_controller.rb:18:in `create_item_owned'
因此,在提交表单时,没有关于用户的信息与参数一起传递。我如何解决这个问题

以下是我的相关路线:

get "center/show_user/" => 'center#show_user'

post "center/show_user" => 'center#create_item_owned'
“create_item_owned”操作是本问题开头描述的操作。 “显示用户”操作是

@user=user.find_by(name:params[:name])
@新建项目=项目。新建

我应该如何转发这些参数,使表单创建的新对象自动与数据库中的特定用户关联(同时自动创建外键)


我的表格是

<%= form_for :item do |x| %>
    Title:  <%= x.text_field :title  %> <br>    
    Content:    <%= x.text_field :content %> <br>   
    <%= x.submit %>
<% end %>

标题:
内容:

我认为您可能仍然需要按id而不是按姓名查找。可能无法在参数中传递名称。您应该检查日志以查看发送的参数。

那么
params[:name]
是否与有效用户的名称匹配?您可以粘贴表单吗?params[:name]是否传递名称?@sevensacat更新了问题,以响应您的请求comments@AnkitG响应您的评论更新的问题SSO
params[:name]
实际上为零,因此找不到任何用户。没有发送与显示页面所属用户相关的参数。如何以这种方式转发参数?我已更新我的问题,以显示包含参数信息的日志。