Ruby - redirect_to重定向到正确的页面,但不更改URL

时间:2016-03-18 18:20:40

标签: ruby-on-rails ruby

我正在教自己Ruby和Rails ......直到今天,我一直感觉很好。 :)

然而,今天我遇到了一个似乎无法破解的问题。我正在通过创建博客来练习。我设置了路由和视图 - 代码将写入数据库 - 但redirect_to似乎没有正常工作。

如果用户导航到:... / article / new,他们可以输入新文章。成功提交后,应用程序应重定向到URL ../article/id,在show.html.erb上显示该文章,并刷新文章已成功保存的消息。

出于某种原因,我无法让URL重定向部分工作。文章保存,show.html.erb显示正确的消息...但网址保持../article/new。如果重定向不起作用,则应用程序的其余部分将无法工作,因为其他操作需要不同的URL(例如,.. / article / id / edit)。

我一直在显示页面上使用

<%= @article.inspect %>
,看起来所有内容都已正确保存(我怀疑是因为它调用了正确的视图)。

任何想法都会非常非常受欢迎。我很高兴能够学习Ruby和Rails,并期待通过这个。

articles_controller.rb:

class ArticlesController < ApplicationController
  def new
    @article = Article.new
  end

  def create
    @article = Article.new(article_params)
    if @article.save
      flash[:notice] = "Article was successfully created"
      redirect_to article_path(@article)
    else
      render 'new'
    end
  end

  def show
    @article = Article.find(params[:id])
  end

  private
  def article_params
    params.require(:article).permit(:title, :description)
  end
end

rake routes:

Prefix Verb   URI Pattern                  Controller#Action
        root GET    /                            pages#home
       about GET    /about(.:format)             pages#about
    articles GET    /articles(.:format)          articles#index
             POST   /articles(.:format)          articles#create
 new_article GET    /articles/new(.:format)      articles#new
edit_article GET    /articles/:id/edit(.:format) articles#edit
     article GET    /articles/:id(.:format)      articles#show
             PATCH  /articles/:id(.:format)      articles#update
             PUT    /articles/:id(.:format)      articles#update
             DELETE /articles/:id(.:format)      articles#destroy

2 个答案:

答案 0 :(得分:1)

您是否尝试将article_path更改为article_url?这可能会触发您正在寻找的行为。

答案 1 :(得分:0)

在挖掘之后,cloud9论坛上的友好用户能够帮助我解决这个问题。我在c-9窗口中运行应用程序...在实际的浏览器窗口中运行它解决了问题。

以下是在cloud9论坛上发现的对话链接:

https://community.c9.io/t/ruby-rails-redirect-to-not-working-properly/3644

再次感谢Oxyrus帮助我解决问题。