类IdeasController< ApplicationController的 before_action:set_idea,only:[:show,:edit,:update,:destroy]
# GET /ideas
# GET /ideas.json
def index
@ideas = Idea.all
end
# GET /ideas/1
# GET /ideas/1.json
def show
end
# GET /ideas/new
def new
@idea = Idea.new
end
# GET /ideas/1/edit
def edit
end
# POST /ideas
# POST /ideas.json
def create
@idea = Idea.new(idea_params)
respond_to do |format|
if @idea.save
format.html { redirect_to @idea, notice: 'Idea was successfully created.' }
format.json { render action: 'show', status: :created, location: @idea }
else
format.html { render action: 'new' }
format.json { render json: @idea.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /ideas/1
# PATCH/PUT /ideas/1.json
def update
respond_to do |format|
if @idea.update(idea_params)
format.html { redirect_to @idea, notice: 'Idea was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @idea.errors, status: :unprocessable_entity }
end
end
end
# DELETE /ideas/1
# DELETE /ideas/1.json
def destroy
@idea.destroy
respond_to do |format|
format.html { redirect_to ideas_url }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_idea
@idea = Idea.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def idea_params
params.require(:idea).permit(:name, :description, :picture)
end
end
如何删除所有的respond_to代码?
答案 0 :(得分:3)
使用respond_with
使控制器更清洁。 This apidoc和
this screencast会回答您所有相关问题。
您的控制器方法将如此干净:
def update
@idea.update(idea_params)
respond_with @idea, notice: 'Idea was successfully updated.'
end
要将其应用于默认脚手架控制器模板,只需从github复制模板内容并将其放入RAILS_ROOT/lib/templates/rails/scaffold_controller/controller.rb
。然后在那里应用respond_with
方法。
答案 1 :(得分:2)
就这样做。
例如
respond_to do |format|
if @idea.save
format.html { redirect_to @idea, notice: 'Idea was successfully created.' }
format.json { render action: 'show', status: :created, location: @idea }
else
format.html { render action: 'new' }
format.json { render json: @idea.errors, status: :unprocessable_entity }
end
end
可以替换为
if @idea.save
redirect_to @idea, notice: 'Idea was successfully created.'
else
render 'new
end