Rails to_param用于漂亮的网址 - 无法获取要更改的网址

时间:2014-07-19 16:59:15

标签: ruby-on-rails

我一直试图改变网址在我的语言学习应用中的显示方式。目前它看起来像这样:

http://localhost:3000/langs/1

我希望它看起来像这样:

http://localhost:3000/langs/1-be

在哪里'是我' Lang'中的第一个词汇/单词输入。英语'下的数据库属性。

以下是我试图让这个漂亮网址发挥作用的变化(在他谈到使用to_param的介绍中的RailsCast第314集之后):

lang model:

class Lang < ActiveRecord::Base

  def to_param
    "#{id} #{english}".parameterize
  end

end

静态页面控制器:

class StaticPagesController < ApplicationController

  def home
    @test = current_user.bookmark
  end

end

&#39;书签&#39;是我用户模型中的一个属性,用于记住&#39;用户在学习时停止使用哪个词。它是一个整数值。

相关的观看代码/链接我想改变:

<%= link_to "Continue Learning!", lang_path(@test), class: "btn btn-large btn-primary"%>

以下是rails控制台中的示例查找:

2.1.1 :001 > Lang.find(1)
  Lang Load (10.3ms)  SELECT "langs".* FROM "langs" WHERE "langs"."id" = $1 LIMIT 1  [["id", 1]]
 => #<Lang id: 1, english: "be", english_to_spanish: "ser", spanish: "una", spanish_to_english: "a", created_at: "2014-07-11 01:30:53", updated_at: "2014-07-11 01:30:53"> 

1 个答案:

答案 0 :(得分:2)

您无法lang_path(@test)@test设置为整数值,并且仍然希望调用Lang内的任何内容。您需要实际将Lang对象传递给lang_pathto_param才能出现。

您需要以下内容:

def home
  @test = Lang.find(current_user.bookmark)
end