作成中のブログにコメントフォームがあります。
ブログの投稿は長いので、フォームは画面の外、ページの下部にあります。
コメントが検証に失敗した場合、ユーザーはページの上部に戻りますが、エラーメッセージはフォームがある場所のずっと下に表示されます。
これが発生した場合、ユーザーが検証エラーメッセージを確認できるように、ブラウザでコメントセクションに焦点を合わせたいと思います。
これが私のcomments_controllerの作成アクションです:
def create
@article = Article.find(params[:article_id])
@comment = @article.comments.build(params[:comment])
if @comment.save
redirect_to article_path(@article), notice: "Thanks for your comment"
else
# is there anyway to pass an id (like #comments) to this render call??
render 'articles/show'
end
end
ご覧のとおりrender 'articles/show'
、検証が失敗した場合は呼び出します。私はこのようなことができることを望んでいました:
render 'articles/show', :anchor => '#comments'
理想的な世界では、上記のコードはarticles#showをレンダリングし、ビューポートのフォーカスをコメントセクションに設定します。を使用するときにアンカーを渡すことができることは知っていますがlink_to
、でそれを行うことはできrender
ますか?
このようなことは可能ですか、それともAjaxソリューションを使用する必要がありますか?