TLDR;我需要将new_topic_post_path
链接指向 /tennis/publish
,而不是 /tennis/new
我已在routes.rb
中定义了自定义路线:
match '/:topic_id/publish', to: 'posts#new', via: [:get, :post]
但仍然new_topic_post_path(topic)
会返回一个链接:
http://localhost:3000/tennis/new
但是,出于化妆原因,我需要网址看起来像这样:
http://localhost:3000/tennis/publish
有什么想法吗?对任何答案都表示赞赏。提前谢谢。
( 另外...... 如果不可能,有没有办法在link_to中添加字符串,例如:link_to post.name, post(/publish)
以达到类似的结果?我尝试过无数种变化,但找不到办法。)
编辑另外,我正在中找到链接
<% all_topics.sort { |a,b| a.name <=> b.name }.each do |topic| %>
<%= link_to topic.name, new_topic_post_path(topic) %>
<% end %>
如此直接link_to "tennis/publish
不合适。
答案 0 :(得分:2)
match '/:topic_id/publish', to: 'posts#new', via: [:get, :post], as: publish_topic
然后使用publish_topic_path
路线助手。
你也可以这样做:
resources :posts, path_names: { new: 'publish' }
答案 1 :(得分:0)
试试这个......
resources :tennis, path_names: { new: 'publish' }
我不知道如何为所有人做这件事。
答案 2 :(得分:0)
您需要在:as
文件中利用routes.rb
选项(用于生成路由助手),如下所示:
match '/:topic_id/publish', to: 'posts#new', via: [:get, :post], as: 'new_topic_post'
您可以在此处详细了解#match
方法的选项:http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Base.html#method-i-match