之前我发过一个问题,但我的照片没有张贴,所以现在我要复制并粘贴代码。我正在尝试制作一个博客网络应用程序是Rails,我正处于“编辑”阶段,基本上我得到一个无方法错误。
这是我的控制器代码: class PostsController< ApplicationController的 def指数 @post = Post.all 端
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
@post.save
redirect_to show_path(@post)
end
def edit
@post = Post.find(params[:id])
end
def show
@post = Post.find(params[:id])
end
private
def post_params
params.require(:post).permit(:title, :body)
end
端
这是我的edit.html.erb视图页面
<%= form_for @post do |f| %>
<%= f.label :title %>
<%= f.text_field :title %><br />
<%= f.label :body %>:
<%= f.text_field :body %><br />
我猜这个问题就在那里
这是我的routes.rb:
Rails.application.routes.draw做
get "pages/about" => "pages#about"
get "pages/contact" => "pages#contact"
get "/posts" => "posts#index"
post "/posts" => "posts#create"
get "post/:id" => "posts#show", as: :show
get "/posts/new" => "posts#new"
get "post/:id/edit" => "posts#edit", as: :edit_post
端
请帮助这真令人沮丧:/
答案 0 :(得分:0)
使用form_for时
<%= form_for @post do |f| %>
这是一个看起来像这样的东西的简写
<%= form_for @post, as: :post, url: post_path(@post), method: :patch, html: { class: "edit_post", id: "edit_post_45" } do |f| %>
所以form_for希望你定义了post_path helper,当你使用资源来定义你的路由时你会得到它,比如
resources :photos
由于您尚未定义路线,因此您没有路径帮助程序,而form_for期望并且您收到错误。
答案 1 :(得分:0)
这是错误消息: 帖子编辑中的NoMethodError 显示/Users/Hisham/Desktop/Rails_projects/myblog/app/views/posts/edit.html.erb第6行提出:
未定义的方法`post_path&#39;对于#&lt;#:0x007fcdc84fd7b8&gt; 你的意思是? posts_path posts_new_path font_path 提取的来源(第6行): 4 五 6 7 8 9
<%= form_for @post do |f| %>
<%= f.label :title %>
<%= f.text_field :title %><br />
Rails.root:/ Users / Hisham / Desktop / Rails_projects / myblog
应用程序跟踪|框架跟踪|完整追踪 app / views / posts / edit.html.erb:6:在`_app_views_posts_edit_html_erb ___ 871381459853082993_70260921890920&#39;
答案 2 :(得分:0)
您需要在路径文件中添加一行,例如:
resources :posts
还在posts_controller中添加更新方法:
def update
@post = Post.find(params[:id])
@post.update(post_params)
redirect_to @post
end
我希望这可以帮到你!