【发布时间】:2011-07-28 18:24:40
【问题描述】:
我是 Ruby 和 Rails 的新手,如果这看起来太菜鸟,我很抱歉。 我创建了一个名为 stream 的资源和另一个名为 tasks 的资源,并使用 has_many 和 belongs_to 正确映射了它们。一切正常,直到我决定在我的 Stream.show 视图中添加“快速任务添加表单”:
这是表单的视图代码:
<%= form_for(@task) do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<div class="field">
<%= f.text_field :title %> <%= f.submit "Add Task" %>
<%= hidden_field_tag(:stream_id, @stream.id) %>
</div>
<% end %>
这是我的 Stream.show 操作:
def show
@stream = Stream.find(params[:id])
@user = User.find(@stream.user_id)
@tasks = @stream.tasks.paginate(:page => params[:page])
@title = @stream.title
@task = Task.new
end
这是我的任务控制器:
class TasksController < ApplicationController
def create
@stream = Stream.find(params[:stream_id])
@stream.tasks.create!({:title => params[:task][:title], :user_id => 1, :owner => 1})
if @stream.save
flash[:success] = "Task created succesfully!"
else
flash[:error] = "Error creating task"
end
redirect_to @stream
end
end
对我来说看起来很基本。问题是当它执行tasks.create时,我收到以下错误消息:“验证失败:用户不能为空,所有者不能为空”
我做错了什么?
编辑:从注释中添加模型代码
类 Stream :destroy 验证 :title, :presence=> true, :length => { :maximum =>50 } 验证 :user_id, :presence => true 结尾 类任务 true, :length => { :maximum =>70 } 验证 :user_id, :presence => true 验证 :owner, :presence => true 验证 :stream_id, :presence => true default_scope :order => "updated_at" 结尾【问题讨论】:
标签: ruby-on-rails ruby