【发布时间】:2021-11-03 13:43:30
【问题描述】:
我是 ruby on rails 的新手。我正在尝试为登录的用户添加任务,但是当我点击任务/新路径时,如果我从表单中删除 url,它会在表单 url 中显示 new.html.erb 文件中的错误,但在提交表单后数据不保存在数据库中
No route matches {:action=>"show", :controller=>"task", :id=>nil}, missing required keys: [:id]
任务控制器
class TaskController < ApplicationController
def get; end
def index
@task = Task.all
end
def show
@task = Task.find(params[:id])
end
def new
@task = Task.new
end
def create
@task = Task.new(params.permit(:tasks).permit(:daily_task, :date, :current_user.id))
respond_to do |format|
if @task.save
format.html { redirect_to @task, notice: 'Task added' }
else
format.html { render :new }
end
end
end
架构
create_table "tasks", force: :cascade do |t|
t.string "daily_task"
t.datetime "date"
t.bigint "users_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["users_id"], name: "index_tasks_on_users_id"
end
new.html.erb
<h3>add task</h3>
<%= form_for :task, url: task_path do |f| %>
Add task: <%=f.text_field :daily_task %><br>
date: <%=f.datetime_select :date %>
<%= f.submit "Add" %>
<% end %>
【问题讨论】:
-
您应该使用
form_with而不是form_for。虽然它不能解决你的问题,但form_for即将贬值。查看form_with文档:apidock.com/rails/ActionView/Helpers/FormHelper/form_with -
还是同样的错误
标签: ruby-on-rails ruby ruby-on-rails-4 rubygems