0
我有一个简单的应用程序,允许用户创建'项目'。在_form上,它要求的唯一数据是'content'和'user_id',它是当前的数字选择器,它将user_id分配给所有权的项目。但是我想要做的是让表单假定user_id是当前用户的ID(使用Devise)。这样其他人就不能将“物品”分配给其他用户。合理?这是表格。通过new_item表单传递User_ID
_form.html.erb
<%= form_for(@item) do |f| %>
<% if @item.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@item.errors.count, "error") %> prohibited this item from being saved:</h2>
<ul>
<% @item.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :content %><br />
<%= f.text_field :content %>
</div>
<div class="field">
<%= f.label :user_id %><br />
<%= f.number_field :user_id %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
你甚至都不需要user_ID的形式,你可以有内容text_field。在控制器中,您可以使用current_user.id来创建项目。 – Kaeros 2013-02-25 00:22:33
在您的控制器中,而不是'Item.new',使用'current_user.items.build' – jvnill 2013-02-25 00:28:35
我试图从窗体中删除user_id div部分,但是当我尝试创建一个新项目时, ... NoMethodError在上述ItemsController#显示 未定义的方法'电子邮件”的零:NilClass Rails.root:C:/网站/ railsprojects /划伤 应用程序跟踪|框架跟踪|充分跟踪 应用程序/控制器/ items_controller.rb:17:在'显示” 请求 参数: { “ID”=> “10”} 显示会话转储 显示ENV转储 响应 集管: 没有 – momchenr 2013-02-25 00:52:35