After submitting a remote form with Rails, how do I redirect the user to another page?

亡梦爱人 提交于 2019-12-03 16:17:48

You can do the following:

#app/controllers/redirect.rb
...

format.js { render js: "window.location='#{url.to_s}'" }

...

If you like keeping things separated, just put format.js in your controller and do the javascript redirect in your view (redirect.js.erb)

In both cases, just set flash[:notice] to whatever you need before redirecting.

redirect_to events_path, format: 'js'

For this you will need to have events/index.js.erb in your file structure.

If you are redirecting anyway, you might as well avoid the remote/AJAX call, and just redirect from the create action.

<%= form_for @my_object do |f| %>

and

def create
  @my_object = MyObject.new(my_object_params)
  ...
  redirect_to some_path
end
7urkm3n

If you have want to redirect it after successfully create/updated and just use .html method. Otherwise just use JS option like in this LINK.

  def create
    @my_object = MyObject.new(my_object_params.merge(user: User.find(session["user_id"])))
    respond_to do |format|
      if @my_object.save
        format.html { redirect_to controller: "users", action: "index", notice: 'Saved successfully.' }
      else
      ....
      end
    end
  end

That will help you, from your controller

render :js => "window.location = '/jobs/index'"

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!