Rails 4 个应用程序链接未能生成正确的 URL
Rails 4 app links failing to generate correct URL
我在 c9 cloud IDE 中有一个正在开发的 rails 4 应用程序,我有一个显示来自不同模型的条目的视图文件。
我的问题是文件中的某些链接在单击时失败,而同一页面上的其他链接似乎有效。我的应用程序视图中有此代码以生成链接
<%= link_to '確認ここへ', "/#{applist.controller_name.strip}/#{applist.wfs_id}/edit" %>
对于大多数模型,它生成正确的 URL,如 ide.c9.io/dname/arubaito_boshu/491/edit,而某些模型失败,如 https://funin_teate_shikyu/new/518/edit
非常感谢任何帮助
您所做的实际上是 rails 链接的反模式。
要在 rails 中生成链接,请使用相应的 ..._path
方法。
您可以使用以下命令查看您的路线:
$ bin/rake routes
这会给你这样的输出:
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
从那里您可以获取 path
方法的前缀。
有了上面的路线就很简单了:
<%= link_to "New User", new_user_path %>
这将生成:
<a href="/users/new">New User</a>
如果你有动态路由,你可以像这样定义一个路由。
# config/routes.rb
Rails.application.routes.draw do
get '/something/:id' => 'something#show', as: :something
end
然后在你的控制器中:
# app/controllers/something_controller.rb
class SomethingController < ApplicationController
def show
puts params[:id]
end
end
现在,如果您访问 /something/this-is-awesome
,您可以使用以下参数访问传递的值(在本例中为:this-is-awesome):params[:id](参见控制器代码)
我在 c9 cloud IDE 中有一个正在开发的 rails 4 应用程序,我有一个显示来自不同模型的条目的视图文件。
我的问题是文件中的某些链接在单击时失败,而同一页面上的其他链接似乎有效。我的应用程序视图中有此代码以生成链接
<%= link_to '確認ここへ', "/#{applist.controller_name.strip}/#{applist.wfs_id}/edit" %>
对于大多数模型,它生成正确的 URL,如 ide.c9.io/dname/arubaito_boshu/491/edit,而某些模型失败,如 https://funin_teate_shikyu/new/518/edit
非常感谢任何帮助
您所做的实际上是 rails 链接的反模式。
要在 rails 中生成链接,请使用相应的 ..._path
方法。
您可以使用以下命令查看您的路线:
$ bin/rake routes
这会给你这样的输出:
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
从那里您可以获取 path
方法的前缀。
有了上面的路线就很简单了:
<%= link_to "New User", new_user_path %>
这将生成:
<a href="/users/new">New User</a>
如果你有动态路由,你可以像这样定义一个路由。
# config/routes.rb
Rails.application.routes.draw do
get '/something/:id' => 'something#show', as: :something
end
然后在你的控制器中:
# app/controllers/something_controller.rb
class SomethingController < ApplicationController
def show
puts params[:id]
end
end
现在,如果您访问 /something/this-is-awesome
,您可以使用以下参数访问传递的值(在本例中为:this-is-awesome):params[:id](参见控制器代码)