如何重定向到存储在数据库Rails中的url

时间:2013-09-17 15:51:52

标签: ruby-on-rails ruby-on-rails-3 pdf paperclip

我想重定向到用户上传的pdf。

所以在浏览器中,当我去/ news_article / 3我希望它显示pdf时,pdf的路径存储在数据库中如何重定向到它?

在控制器@news_article = NewsArticle.find(params[:id])

中的show动作中

模型

class AddAttachPaperclipToNewsArticles < ActiveRecord::Migration
  def change
    add_column :news_articles, :attach_file_name, :string
    add_column :news_articles, :attach_content_type, :string
    add_column :news_articles, :attach_file_size, :integer
    add_column :news_articles, :attach_updated_at, :datetime
  end
end

如果我做@news_article.attach,它给了我pdf的路径,但是如何让浏览器显示pdf?当我在控制器中尝试redirect_to @news_article.attach时,它为paperclip :: attachment:class表示未定义的方法'model_name'。

这是为什么?

谢谢:)

2 个答案:

答案 0 :(得分:1)

执行此操作的方法是在def show编写的redirect_to @news_article.attach.url中的news_article控制器中{{1}}

在news_article paperclip存储url中的attach(我在模型中称之为),而.url帮助是浏览器去那里的原因:)

答案 1 :(得分:0)

看起来@ news_article.attach正在向您返回paperclip :: attachment对象。由于paperclip :: attachment类的deafult to_s方法是url,因此您将看到pdf路径何时单独评估它。但实际上它不是“字符串”路径。因此,在重定向调用中,尝试通过在@new_article.attach上显式调用to_s来提供字符串路径,如redirect_to @news_article.attach.to_s