Jwa*_*622 2 ruby-on-rails activeadmin
在 Rails 中(特别是在 ActiveAdmin 中),带有作为第二个参数传递的数组的 link_to 帮助器会做什么?这方面的文档在哪里?
我有这个代码:
index pagination_total: false do
column :name, :sortable => :first_name do |user|
link_to user.full_name, [:admin, user]
end
那有什么作用?[:admin, user] 在这里做什么?
这里一件令人困惑的事情是我的 ActiveAdmin 面板定义为:
ActiveAdmin.register Promotions::User, as: "User" do
因此,链接实际上是在模块前面加上的,如下所示:
admin_promotions_users_path这是我不想要的。这会导致错误,因为它as:会覆盖 ActiveAdmin path_helper。我想要的是:
admin_users_path。
简而言之,我认为这里的错误是,link_helper当传递带有符号对象的数组时,我不知道 a 扩展为什么。
小智 5
根据Ruby on Rails-link_to 方法,方法签名是link_to(body, url, html_options = {})。参数url可以取:
"/users/john-smith"@user[:admin, user]如果url参数是字符串,它只是将其传递给href链接。如果url参数是对象、数组或路径,它将值传递给url_for幕后的方法。
url_for将获取一个 Object,确定类类型为User,并查找相应的user_path(@user)路由方法。对于数组,它首先获取任何符号并使用它来构造 url 帮助器的名称,然后它将获取任何对象并将其作为值传递。这就是最终link_to user.full_name, [:admin, user]转换成的方式admin_user_path(@user)<a href="/users/john-smith">John Smith</a>
更新
根据这个堆栈溢出答案(链接到url_for和polymorphic_url)url_for获取输入并将其传递给父方法,该方法由于某种原因添加了当前范围。默认link_to使用。如果您想“取消范围” ,则需要使用该方法。我在自己的应用程序中在类似的情况下测试了这个概念,并得到了与@Jwan622相同的结果。url_forpolymorphic_path
url_for([:admin, user]) # Does not exist
#=> admin_promotions_users_path
polymorphic_path([:admin, user]) # Exists
#=> admin_users_path
Run Code Online (Sandbox Code Playgroud)
因此,您应该使用这个:
link_to user.full_name, admin_users_path
Run Code Online (Sandbox Code Playgroud)
或者这样(如果您需要动态生成链接):
link_to user.full_name, polymorphic_path([:admin, user])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
802 次 |
| 最近记录: |