感谢您一直以来的支持。我有一个表格,我正在努力弄清楚构建它的最佳方式。
我有一个表单来创建一个新的事件,并希望列出用户的字段,简单的电子邮件和名称。
创建事件时,应创建嵌套资源 User(如果不存在(,或者应将user_id更改为 User 表中的 User。我的应用未使用任何身份验证,因此current_user不可用。该应用程序将用于人们输入姓名和电子邮件实际上属于他们的善意。
这是我到目前为止所拥有的..
事件模型
belongs_to :user
has_many :attendees, dependent: :destroy
has_many :comments, dependent: :destroy
accepts_nested_attributes_for :user, allow_destroy: true, reject_if: :all_blank
用户模型
has_many :events, dependent: :destroy
事件控制器 # 新增功能
@event = Event.new
@event.build_user (I assume this is working and is building the user)
事件视图 # 新建
<h2>Get Started</h2>
<%= simple_form_for @outing, multipart: true do |f| %>
<fieldset>
<legend>Event Details</legend>
<%= f.input :name, autofocus: true %>
<%= f.label :chosen_date %>
<%= f.text_field :chosen_date, start_year: Date.today.year, :"data-behaviour" => 'datepicker' %>
<%= f.input :chosen_time, minute_step: 5 %>
<%= f.input :description %>
</fieldset>
<%= render 'user_form', :user => @event.user %>
<%= f.button :submit %>
<% end %>
User_Form看起来像这样..
<fieldset>
<legend>About You</legend>
<%= simple_fields_for user do |u| %>
<%= u.name %>
<%= u.email %>
<% end %>
</fieldset>
我不确定这是否是正确的方法。我需要一些关于在控制器端如何通过嵌套资源更改该user_id的指导。
我目前收到一个错误,指出..
undefined method `name' for #
提前感谢!! :)
您没有提供整个堆栈跟踪,这使得很难说出任何明确的东西。 这就是为什么我对你的问题投了反对票。
所以我的猜测是:
您的user_form如下所示:
<fieldset>
<legend>About You</legend>
<%= simple_fields_for user do |u| %>
<%= u.name %>
<%= u.email %>
<% end %>
</fieldset>
它调用方法name
并在u
上email
。 在这种情况下,u
是simple_fields_for
创建的对象。 它是一个表单助手,允许您创建输入字段、选择框等,就像在new
部分中所做的那样。
所以与其打电话u.name
,不如u.input :name
u.input :email
.