我是Rails的新手,因此我按照入门指南进行操作,可在此处找到:http://edgeguides.rubyonrails.org/getting_started.html并在此处:http://guides.rubyonrails.org/getting_started.html但我无法使用5.6 / 5.7进行操作。
这是我的控制者:
class PostsController < ApplicationController
def new
end
def show
@post = Post.find(params[:id])
end
def create
@post = Post.new(post_params)
@post.save
redirect_to @post
end
private
def post_params
params.require(:post).permit(:title, :text)
end
end
这是我的表格:
<%= form_for :post, url: posts_path do |f| %>
<p>
<%= f.label :title %><br>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :text %> <br>
<%= f.text_area :text %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
这是routes.rb
Blog::Application.routes.draw do
get "welcome/index"
root 'welcome#index'
resource :posts
end
但是当我提交时,我收到了这个错误:
NoMethodError in PostsController#create
undefined method post_url' for #<PostsController:0x007f733c415418>
,其摘要源突出显示行redirect_to @post
。
我究竟做错了什么?我有ruby 1.9.3和rails 4.0.0
答案 0 :(得分:10)
在routes.rb
我看到你
resource :posts
我相信,它应该是:
resources :posts
答案 1 :(得分:0)
您可能错过了在路线中添加帖子部分。尝试运行rake路线,看看你得到了什么结果:
rake routes | grep post
如果您在路线中提到了帖子,那么可能是您在这里使用了错误的路径。
答案 2 :(得分:0)
您是否在config/routes.rb
添加了以下内容?
resources :posts