Я делаю это в Ruby on Rails, как в официальном руководстве. Я создал модель Post, я сделал form_for в приложение/просмотров/new.html.erb как этотActionController :: UrlGenerationError в блоге # новый
<%= form_for :blog, url: blog_path do |f| %>
<p>
<%= f.label :title %>
<%= f.text_field :title %>
#some other stuff
<%= f.submit %>
<% end %>
но Im reciving ошибки
ActionController::UrlGenerationError in Blog#new
Showing <some folders>/hello_world/app/views/blog/new.html.erb where line #1 raised:
No route matches {:action=>"show", :controller=>"blog"} missing required keys: [:id]
Extracted source (around line #1):
<%= form_for :blog, url: blog_path do |f| %>
Я не знаю, почему это происходит, bacause моего маршруты выглядят правильно для меня. Мои маршруты файл:
Rails.application.routes.draw do
resources :users
resources :blog
end
Это мой blog_controller:
class BlogController < ApplicationController
def index
@posts = Post.all
end
def new
end
private
def post_params
params.require(:blog).permit(:title, :text)
end
end
я добавил
def create
@post = Post.new(post_params)
if @post.save
redirect_to @post
else
render 'new'
end
end
, но это не помогло
Ошибка не отображается, когда я удалить url из form_for ("url: blog_path"), но очевидно, что он не работает, потому что или формирует цель. У меня есть другие файлы в проекте, но я думаю, что они не важны для этой проблемы.
Это помогло раздельно. У меня больше не было ошибок, но мой post_params private mothod вызывает ошибку. Я скопировал код из рабочего приложения для блога, но все-таки я получил ошибку, поэтому я удалил проект и создал новый. – AbUndZu
Если возможно, пожалуйста, поделитесь этой ошибкой здесь –