我正在创建一个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>
答案 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
)