将路径路径转换为字符串

时间:2016-03-25 18:32:08

标签: ruby-on-rails ruby-on-rails-4

这可能很容易实现,但找不到任何有此答案的地方(我在路径中看到的所有路径都会出现在这个视图中)。

我正在使用第三方gem,需要回调控制器来构建输出。

在我回电话中,我正在传回一条带有完整路径的字符串。但是,如何获取路径的路径以将其转换为字符串?

路线示例:

get 'edit-it/:id', to: 'controller#action', as: :edit_it

控制器回调:

def button_output
   # TODO: How to pass route to string with the id I need of the current
   # object in callback.

   id = 84848484

   # I've tried (and none seem to work)
   # send(:edit_it_path)
   # :edit_it
   # :edit_it_path(id)
   # :edit_it(id)
   # edit_it_route = edit_it(id) # And combo of all those above

   "<a href=\"#{route_path_goes_here_with_id}\">Edit</a>".html_safe
end

这是一个非常简化的版本,但通常我似乎找不到。

我错过了什么吗?

再次感谢!

1 个答案:

答案 0 :(得分:0)

更新您的路线配置以接受id参数:

get 'edit-it/:id', to: 'controller#action', as: :edit_it

您还可以添加id在路线中的约束条件;例如只允许数字:

get 'edit-it/:id', to: 'controller#action', as: :edit_it, constraints: { id: /\d+/ }

然后将其用作:

"<a href=\"#{edit_it_path(id)}\">Edit</a>".html_safe

或(在视图文件中),

<%= link_to 'Edit', edit_it_path(id) -%>

并在您的控制器中:

link_to('Edit', edit_it_path(id))