respond_to
和respond_with
之间有什么区别?
他们在做什么?
任何人都可以使用输出屏幕截图发布示例吗?
感谢。
答案 0 :(得分:13)
有一个非常完整的答案here。本质上,respond_with与respond_to做同样的事情,但使你的代码更清洁。它仅适用于轨道3我认为
答案 1 :(得分:0)
respond_to 和 respond_with 执行相同的工作,但 respond_with 往往会使代码变得简单,
此示例中为
def create
@task = Task.new(task_params)
respond_to do |format|
if @task.save
format.html { redirect_to @task, notice: 'Task was successfully created.' }
format.json { render :show, status: :created, location: @task }
else
format.html { render :new }
format.json { render json: @task.errors, status: :unprocessable_entity }
end
end
end
使用 respond_with ,
的相同代码def create
@task = Task.new(task_params)
flash[:notice] = "Task was successfully created." if @task.save
respond_with(@task)
end
您还需要在控制器中提及以下格式:
respond_to :html,:json,:xml
当我们将@task
传递给respond_with时,它会实际检查对象是否有效?第一。如果对象无效,那么它将在创建或渲染时调用render:new:在更新时编辑。
如果对象有效,它将自动重定向到该对象的show动作。
也许您希望在成功创建后重定向到索引。您可以通过将:location
选项添加到respond_with:
def create
@task = Task.new(task_params)
flash[:notice] = @task.save ? "Your task was created." : "Task failed to save."
respond_with @task, location: task_path
end
有关详细信息,请访问此Blog