在我的应用程序中,我在show.html.erb页面上显示了操作,其中显示了该配方的配方和注释。我添加了ajax功能来添加注释。在控制器RecipeController我有add_new_comment动作。我可以从add_new_action重定向到显示来自format.js的动作吗?
显示操作:
def show
@category = Category.where(id: @recipe.category_id).take
@comments = @recipe.comments.recent.all.paginate(page: params[:page], per_page:15)
end
add_new_comment 操作:
def add_new_comment
@recipe = Recipe.find(params[:recipe_id])
if params[:comment].present?
@comment = @recipe.comments.build
@comment.comment = params[:comment]
@comment.user = current_user
respond_to do |format|
if @comment.save
format.html {redirect_to recipe_path(@recipe)}
format.js {render action: 'show', :id => @recipe.id}
end
end
end
end
我有 add_new_comment.js.erb
$('#comments').html("<%= j (render 'comments') %>");
答案 0 :(得分:5)
您可以使用window.location.replace或window.location.href,如上所述here
只需将该行添加到add_new_comment.js.erb即可。
$('#comments').html("<%= j (render 'comments') %>");
window.location.replace("<%= recipe_path(@recipe) %>");
答案 1 :(得分:2)
因此,如果我理解得很好,您想在添加评论后重定向到食谱展示页面,以便您可以使用新评论更新页面?如果是这样,您可以在不重定向的情况下执行此操作,您只需将新创建的注释附加到食谱注释中即可。
$('#comments').append("<%= j (render @comment) %>");
window.location.assign('your_url');
答案 2 :(得分:2)
请尝试此代码。
window.location.href = "<%= recipe_path(@recipe) %>"
答案 3 :(得分:0)
尝试通过以下方式呈现JS:
time change price price_1 symbol volume volume_1
---- ------ ----- ------- ------ ------ --------
2019-05-09T10:00:00Z 3 1 ABCD 2000
2019-05-09T10:00:00Z 2 4 ABCD 2000
2019-05-09T10:00:00Z 4 4 ABCD 13000
2019-05-09T10:00:00Z 1 22 ABCD 450
希望它会有所帮助:)