Я не использовал Ruby / Rails годами. Я пытаюсь начать работу с просто функционирующим приложением Todo CRUD.
App / модели / todo.rb
class Todo < ApplicationRecord
end
дб / схема
ActiveRecord::Schema.define(version: 2019_06_25_070433) do
create_table "todos", force: :cascade do |t|
t.string "title"
t.string "body"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end
Проблема в том, что когда я отправляю задачу, она отображается как "/todos".
http://localhost:3000/todos
Страница отображается как:
Вот (неполные) действия контроллера.
class TodosController < ApplicationController
def index
@todos = Todo.all
end
def show
@todo = Todo.find(params[:id])
end
def update
end
def new
@todo = Todo.new
end
def create
@todo = Todo.new(params[:title]) # I am not sure about the correct syntax for params. I want the title AND body
@todo.save
redirect_to @todo
end
def edit
end
def destroy
end
end
new.html.erb
<%= form_with model: @todo do |form| %>
<%= form.text_field :title %>
<%= form.label :body%>
<%= form.text_field :body %>
<%= form.submit %>
<% end %>
Когда я отправляю "todo" страницу перенаправления на маршрут показа, и когда HTML-страница отображает, она не отображает "todo".
show.html.erb
<ul>
<%= @todo.title %>
</ul>
Терминал рельсов показывает следующее:
Started POST "/todos" for ::1 at 2019-06-25 09:41:45 -0700
Processing by TodosController#create as JS
Parameters: {"utf8"=>"✓", "authenticity_token"=>"x29t72XmHgzZ49Lg3fu/11z2U0p5bSE1RpZhRyxzIqzvtCUuCnMhfbYF6ndYq7OU58aBtNggdYzSEsmQlGKwHQ==", "todo"=>{"title"=>"Hello ", "body"=>"World"}, "commit"=>"Create Todo"}
(0.1ms) begin transaction
↳ app/controllers/todos_controller.rb:19
Todo Create (0.4ms) INSERT INTO "todos" ("created_at", "updated_at") VALUES (?, ?) [["created_at", "2019-06-25 16:41:45.054400"], ["updated_at", "2019-06-25 16:41:45.054400"]]
↳ app/controllers/todos_controller.rb:19
(4.4ms) commit transaction
↳ app/controllers/todos_controller.rb:19
Redirected to http://localhost:3000/todos/32
Completed 200 OK in 8ms (ActiveRecord: 4.9ms)
Started GET "/todos/32" for ::1 at 2019-06-25 09:41:45 -0700
Processing by TodosController#show as HTML
Parameters: {"id"=>"32"}
Todo Load (0.1ms) SELECT "todos".* FROM "todos" WHERE "todos"."id" = ? LIMIT ? [["id", 32], ["LIMIT", 1]]
↳ app/controllers/todos_controller.rb:7
Rendering todos/show.html.erb within layouts/application
Rendered todos/show.html.erb within layouts/application (0.3ms)
Completed 200 OK in 13ms (Views: 11.8ms | ActiveRecord: 0.1ms)
Когда я запускаю команду seed, чтобы заполнить приложение фиктивными данными, оно отображается нормально.
seeds.rb
Todo.create(title: 'AAA', body: 'aaa')
Todo.create(title: 'BBB', body: 'bbb')
Todo.create(title: 'CCC', body: 'ccc')
Todo.create(title: 'DDD', body: 'ddd')
Спасибо.