Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在rails上工作时,我有文本字段和文本区域来接收文本,但它显示了验证错误“quot;主题不能为空";_Ruby On Rails_Ruby_Validation - Fatal编程技术网

Ruby on rails 在rails上工作时,我有文本字段和文本区域来接收文本,但它显示了验证错误“quot;主题不能为空";

Ruby on rails 在rails上工作时,我有文本字段和文本区域来接收文本,但它显示了验证错误“quot;主题不能为空";,ruby-on-rails,ruby,validation,Ruby On Rails,Ruby,Validation,在适当的文本字段和区域中键入主题和详细信息后,仍然显示“验证错误”“主题不能为空”。有什么问题?我似乎想不出来 This is the task partial _task.html.erb: <li id="task-<%= task.id %>"> <%= link_to gravatar_for(task.user, size: 50), task.user %> <span class="task"><%=

在适当的文本字段和区域中键入主题和详细信息后,仍然显示“验证错误”“主题不能为空”。有什么问题?我似乎想不出来

This is the task partial
_task.html.erb:

 <li id="task-<%= task.id %>">
      <%= link_to gravatar_for(task.user, size: 50), task.user %>
      <span class="task"><%= link_to task.user.name, task.user %></span>
      <span class="topiclabel">Title:</span>
      <span class="topic"style=color:black> <%= task.topic %></span>
      <span class="detailslabel">Details: </span>
      <span class="detail"><%= task.detail %></span> 
      <span class="timestamp">
        Posted <%= time_ago_in_words(task.created_at) %> ago.
      </span>
</li> 

Schema:

ActiveRecord::Schema.define(version: 20170526194708) do

  create_table "stages", force: :cascade do |t|
    t.text     "topic"
    t.datetime "duration"
    t.text     "detail"
    t.integer  "task_id"
    t.integer  "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["task_id"], name: "index_stages_on_task_id"
    t.index ["user_id", "created_at"], name: "index_stages_on_user_id_and_created_at"
    t.index ["user_id"], name: "index_stages_on_user_id"
  end

  create_table "tasks", force: :cascade do |t|
    t.text     "topic"
    t.integer  "member"
    t.text     "detail"
    t.integer  "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["user_id", "created_at"], name: "index_tasks_on_user_id_and_created_at"
    t.index ["user_id"], name: "index_tasks_on_user_id"
  end

routes.rb:

 resources :tasks,          only: [:create, :destroy]

task.rb
class Task < ApplicationRecord
  belongs_to :user
  has_many :stages
  default_scope -> { order(created_at: :desc) }
   validates :user_id, presence: true
   validates :topic, presence: true, length: { maximum: 140 }
   validates :detail, presence: true, length: { maximum: 140 }

end
这是部分任务
_task.html.erb:
  • 模式: ActiveRecord::Schema.define(版本:20170526194708)do 创建表格“stages”,force::cascade do | t| t、 文本“主题” t、 日期时间“持续时间” t、 文本“细节” t、 整数“任务id” t、 整数“用户id” t、 datetime“created_at”,null:false t、 datetime“更新时间”,null:false t、 索引[“任务id”],名称:“任务id上的索引” t、 索引[“用户id”,“在”]创建,名称:“在用户id和创建位置创建索引” t、 索引[“用户id”],名称:“用户id上的索引” 结束 创建“任务”表,force::cascade do | t| t、 文本“主题” t、 整数“成员” t、 文本“细节” t、 整数“用户id” t、 datetime“created_at”,null:false t、 datetime“更新时间”,null:false t、 索引[“用户id”,“创建位置”],名称:“用户id和创建位置上的索引任务” t、 索引[“用户id”],名称:“用户id上的索引任务” 结束 routes.rb: 资源:任务,仅:[:创建,:销毁] task.rb 类任务<应用程序记录 属于:用户 有很多阶段吗 默认范围->{顺序(在::desc创建)} 验证:用户id,状态:true 验证:主题,状态:true,长度:{最大值:140} 验证:详细信息,存在性:true,长度:{最大值:140} 结束
  • Project\u pages\u controller.rb:

    def home
        if logged_in?
          @task = current_user.tasks.build
    end
    
    
    _task_form.html.erb:
    
    <%= form_for(@task) do |f| %>
      <%= render 'shared/error_messages', object: f.object %>
      <div class="field">
        <%= f.text_field :topic, placeholder: "Compose new task..." %>
        <%= f.text_area :detail, placeholder: "Write task details..." %>
      </div>
      <%= f.submit "Post", class: "btn btn-primary" %>
    <% end %>
    
    
    This is the show page
    
    def home
    如果你登录了?
    @任务=当前用户任务.tasks.build
    结束
    _task_form.html.erb:
    这是展示页面
    
    show.html.erb

      <div class="col-md-8">
        <% if @user.tasks.any? %>
          <% if @user.stages.any? %>
          <h3>Tasks (<%= @user.tasks.count %>)</h3>
          <ol class="tasks">
            <%= render @tasks %>
            <%= render @stages %>
          </ol>
          <%= will_paginate @tasks %>
           <% end %>
        <% end %>
      </div>
    
    
    任务()
    
    这是我的控制器

    class TasksController < ApplicationController
        include TasksHelper
      before_action :logged_in_user, only: [:create, :destroy]
    
      def create
        @task = current_user.tasks.build(task_params)
        if @task.save
          flash[:success] = "Task created!"
          redirect_to root_url
        else
          @feed_items = []
          render 'workshareapp_pages/home'
        end
      end
    
      def destroy
      end
    
      private
    
        def task_params
          params.require(:task).permit(:detail)
        end
    
    end
    
    class TasksController
    验证:主题,状态:true,长度:{最大值:140}
    此子句验证记录中的topic属性是否存在以及长度是否在140个字符以内。这用于在保存前验证记录。如果你真的不需要它,你可以把它取下来。另一个选项是,您可以创建专门用于此表单的表单模型。

    这可能是模型任务中的验证。

    您的许可证中缺少:主题字段,这就是它未被处理的原因

    def task_params
      params.require(:task).permit(:detail, :topic)
    end
    

    你的控制器在哪里?你发布的控制器似乎不完整。
    update
    和/或
    create
    方法在哪里?您在哪里保存对象?您是否允许使用强参数正确地使用属性?谢谢Farhan,我刚刚添加了控制器。是否必须先删除附加到模型任务的验证?我删除了验证,但在提交时,它显示在页面上,但标题是空的,回到事实上,它没有看到文本字段中的文本,这可能是使用文本字段的问题吗?详细信息是文本区域,并显示出来。这不起作用,显然是关于拾取文本区域中键入的文本。请您向我解释如何这样做,以及如何将其链接到表单,因为表单已附加到任务模型?我删除了验证,但当我提交时,它显示在页面上,但标题是空的,回到事实上,它没有看到文本字段中的文本,这可能是使用文本字段的问题吗?详细信息是文本区域,并显示出来。这不起作用,显然是关于拾取文本区域中键入的文本。def task_params params.require(:task)。permit(:detail,:topic)endThank Cristobal昨天从一开始就看了这一点。