在Ruby on Rails中编辑文章是一个常见的任务,涉及到模型、视图和控制器(MVC)的基本概念。下面我将详细介绍这个过程的基础概念、优势、类型、应用场景以及可能遇到的问题和解决方案。
假设我们有一个名为Post
的模型,下面是如何实现编辑文章的功能:
在config/routes.rb
文件中添加路由:
Rails.application.routes.draw do
resources :posts
end
这将自动生成包括编辑文章在内的CRUD路由。
如果还没有PostsController
,可以使用以下命令生成:
rails generate controller Posts
然后在app/controllers/posts_controller.rb
中添加编辑方法:
class PostsController < ApplicationController
before_action :set_post, only: [:edit, :update]
def edit
end
def update
if @post.update(post_params)
redirect_to @post, notice: 'Post was successfully updated.'
else
render :edit
end
end
private
def set_post
@post = Post.find(params[:id])
end
def post_params
params.require(:post).permit(:title, :content)
end
end
在app/views/posts
目录下创建edit.html.erb
文件:
<h1>Editing Post</h1>
<%= form_with(model: @post, local: true) do |form| %>
<% if @post.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>
<ul>
<% @post.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= form.label :title %>
<%= form.text_field :title %>
</div>
<div class="field">
<%= form.label :content %>
<%= form.text_area :content %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
确保在config/routes.rb
中正确配置了路由。
确保控制器和方法名称拼写正确,并且控制器文件放在正确的目录下。
确保在模型中正确设置了验证规则,并且在视图中正确显示错误信息。
通过以上步骤,你应该能够在Ruby on Rails中成功实现编辑文章的功能。
领取专属 10元无门槛券
手把手带您无忧上云