gpt4 book ai didi

ruby-on-rails - 在带有格式 block 的 Controller 中仅响应 HTML 的 rails 方式是什么?

转载 作者:行者123 更新时间:2023-12-04 05:59:23 25 4
gpt4 key购买 nike

从历史上看,我一直在我的 rails 块中编辑默认生成的 Controller 代码,以在我只用 HTML 响应时删除格式块:

def create
@message = Message.new(params[:message])

respond_to do |format|
if @message.valid? and @message.save
...
flash[:msgsent] = 'Your message was successfully sent.'
format.html { redirect_to ... }
else
format.html { render ... }
end
end
end

变成
def create
@message = Message.new(params[:message])

if @message.valid? and @message.save
...
flash[:msgsent] = 'Your message was successfully sent.'
redirect_to ...
else
render ...
end
end

这个可以吗?我知道它有效,但只是不知道 rails-way,或者它是否会影响我没有考虑的某些用例。

为了更加安全,我想我可以对仅对 .html 请求的响应添加限制。

谢谢!

最佳答案

您也可以使用 respond_withrespond_to .

杀死那些 response_with 块是正确的。如果您想要与 HTML 格式不同的响应,则只需要这些(或我对此的建议)。 :json、:js、:csv、:xml 等

所以...如果您需要除 :html 之外的任何其他响应...
在 Controller 的顶部,您放置:

respond_to :html, :js

def create
@message = Message.new(params[:message])

if @message.valid? and @message.save
...
flash[:msgsent] = 'Your message was successfully sent.'
redirect_to ...
else
respond_with @message
end
end

如果你想用 json 响应,你不要使用 respond_with(但你仍然需要将它添加到 respond_with 的列表中:
render json: @message

关于ruby-on-rails - 在带有格式 block 的 Controller 中仅响应 HTML 的 rails 方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20405634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com