Rails 3:如何编写路径路径

时间:2014-02-27 22:35:34

标签: ruby-on-rails ruby routes

我正在创建一个rails应用程序,我无法弄清楚或找到这个问题的答案。

路线是什么:

@example = Example.find_by_notId(params[:notId])

我希望我的路由看起来比/ example / 1更好,而宁愿让它读取/ notId(其中notId将是title或其他非ID int)。通常我会使用show_path,但在我的html <%= link_to image_tag(pic), show_path(example) %>中不起作用。这是我的代码,当我将其硬编码到URL(localhost:3000 / notId)时,它可以工作,但我需要一种方法来通过链接路由它。有什么想法吗?

显示

def show
   @example = Example.find_by_title(params[:title])
end

路线

match '/:notId', to: 'example#show', via: 'get'

_example.html.erb

<div class="example">
 <% Movie.all.each do |example| %>
  <%pic = example.title + ".jpg"%>
  <%= link_to image_tag(pic), show_path(example) %>
 <% end %>
e</div>

1 个答案:

答案 0 :(得分:0)

您可能需要覆盖路线中的:id参数:

resources :examples, param: :title

这将产生如下路线:

/examples/:title
/examples/:title/edit

然后在你的观点中:

example_path(example.title)

或者,您可以在模型中更改方法to_param(用于构建网址):

class Example < ActiveRecord::Base
  def to_param
    title
  end
end

这样您就可以继续使用example_path(example)(不使用.title