【发布时间】:2014-03-11 05:58:59
【问题描述】:
我在 Rails 中工作,我有一个应用程序,我希望一个用户能够从他们的用户显示页面创建另一个模型的实例。
我有两张桌子,一张给用户,一张给汽车。 我设置了关系,所以一个用户 has_many :cars,每辆车都属于_to :user
当用户第一次登录时,如果 user.cars = 0 我希望页面显示表单在用户显示页面添加汽车。
我正在使用 Michael Hartl 的教程,这很棒,我尝试在我的情况下使用 micropost 模型工作,但我遇到了一个我无法弄清楚的错误。
这是我的 show.html.erb:
<p id="notice"><%= notice %></p>
<% provide(:title, @user.name) %>
<div class="userwrap">
<div class="usershow">
<div class="row">
<section>
<h1>
<%= gravatar_for @user %>
<%= @user.name %>
</h1>
</section>
</div>
<p>
<%= image_tag @user.image.url(:medium) %>
</p>
<p>
<strong>Name:</strong>
<%= @user.name %>
</p>
<p>
<strong>Email:</strong>
<%= @user.email %>
</p>
<%= link_to 'Edit', edit_user_path(@user) %> |
<%= link_to 'Back', users_path %>
</div>
<div class="usercars">
<%= render 'shared/carform' %>
</div>
</div>
这是汽车表格
<%= form_for(@car) do |f| %>
<% if @car.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@car.errors.count, "error") %> prohibited this car from being saved:</h2>
<ul>
<% @car.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :nick %><br>
<%= f.text_field :nick %>
</div>
<div class="field">
<%= f.label :model %><br>
<%= f.text_field :model %>
</div>
<div class="field">
<%= f.label :make %><br>
<%= f.text_field :make %>
</div>
<div class="field">
<%= f.label :neighborhood %><br>
<%= f.text_field :neighborhood %>
</div>
<div class="field">
<%= f.label :year %><br>
<%= f.number_field :year %>
</div>
<div class="field">
<%= f.label :picture %><br>
<%= f.text_field :picture %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
这是我的控制器展示
def show
@user = User.find(params[:id])
@cars = @user.cars
end
我得到的错误是
First argument in form cannot contain nil or be empty
我想我在这个问题上已经被难住了太久了。森林太深,看不到树木。我敢肯定它相对简单。汽车控制器是否应该在用户视图中处理这个问题?如果是这样,我该如何实现?
希望我是清楚的。如果您需要查看其他内容,我很乐意发布。感谢您的帮助
【问题讨论】:
标签: ruby-on-rails