Rails: Todo создается и отображается как "/ todos" на странице HTML - PullRequest
0 голосов
/ 25 июня 2019

Я не использовал 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

Страница отображается как:

enter image description here

Вот (неполные) действия контроллера.

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')

Спасибо.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...