我一直试图改变网址在我的语言学习应用中的显示方式。目前它看起来像这样:
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">
答案 0 :(得分:2)
您无法lang_path(@test)
将@test
设置为整数值,并且仍然希望调用Lang
内的任何内容。您需要实际将Lang
对象传递给lang_path
,to_param
才能出现。
您需要以下内容:
def home
@test = Lang.find(current_user.bookmark)
end