标签: named-routing

已安装的导轨引擎中的命名路由

我正在制作一个小型轨道引擎,我这样安装:

mount BasicApp::Engine => "/app"
Run Code Online (Sandbox Code Playgroud)

使用这个答案,我已经验证了引擎中的所有路由都应该是:

但是 - 当我(在引擎内)链接到命名路由(在引擎内定义)时,我收到此错误

undefined local variable or method `new_post_path' for #<#<Class:0x000000065e0c08>:0x000000065d71d0>
Run Code Online (Sandbox Code Playgroud)

运行"rake route"清楚地验证"new_post"应该是一个命名路径,所以我不知道为什么Rails(3.1.0)无法解决它.欢迎任何帮助

我的config/route.rb(对于引擎)看起来像这样

BasicApp::Engine.routes.draw do
  resources :posts, :path => '' do
                resources :post_comments
                resources :post_images
        end
end
Run Code Online (Sandbox Code Playgroud)

我应该补充说它是和孤立的引擎.但是,像main_app.root_path这样的路径工作正常 - 而root_path却没有

mount ruby-on-rails named-routing rails-engines ruby-on-rails-3

36
推荐指数
2
解决办法
2万
查看次数

使用带参数和form_tag的命名路由

我试图在Rails中创建一个简单的搜索表单,但我想我错过了一些东西.

我有一个命名的搜索路线:

map.search ":first_name/:last_name", :controller => "home", :action => "search"
Run Code Online (Sandbox Code Playgroud)

我正在尝试在我的搜索表单中使用它:

<% form_tag(search_path, :method => 'get') do %>
  <%= text_field_tag(:first_name) %>
  <%= text_field_tag(:last_name) %>
  <%= submit_tag("Search") %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但是当我加载搜索表单时,我得到一个ActionController :: RoutingError:

search_url无法从{:action =>"search",:controller =>"home"}生成 - 您可能有不明确的路线,或者您可能需要为此路线提供其他参数.content_url具有以下必需参数:[:first_name,:last_name] - 它们是否都满足?

我错过了什么?我认为我的表单中定义的字段会自动与我的路由参数相关联.: - /

更新:

我知道search_path是在现在显示表单之前生成的,因此无法更新.后见之明显而易见!

我改变了路线:

map.search 'search', :controller => "home", :action => "search"
map.name ':first_name/:last_name', :controller => "home", :action => "name"
Run Code Online (Sandbox Code Playgroud)

现在这个search动作就是:

def search
  redirect_to name_path(params)
end
Run Code Online (Sandbox Code Playgroud)

这一切都有效!这里的主要目标是通过搜索结果从名为route 的名称获取该URL .多谢你们!

forms parameters ruby-on-rails named-routing

6
推荐指数
1
解决办法
7139
查看次数

如何在Rails中添加:格式选项到命名路由?

我有一个名为profile的命名路由,我希望能够以json的身份访问它.但是当我查看我的rake路由输出时,我发现缺少(.:格式).如何将其添加到命名路线?

user GET    /users/:id(.:format)    {:action=>"show", :controller=>"users"}
profile     /:username              {:action=>"show", :controller=>"users"}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

ruby format ruby-on-rails named-routing

2
推荐指数
1
解决办法
2414
查看次数

Rails 3路由:命名路由."没有路线匹配"

所以我得到了一个'No route matches'错误,并且对Rails 3(以及一般的Rails)不熟悉,我真的不知道问题是什么.以下是相关路线:

resources :users
#...
match 'reset_password(/:reset_password_code)' => 'users#reset_password', :as => :reset_password, :via => :get
match 'reset_password' => 'users#reset_password_submit', :as => :reset_password, :via => :post
Run Code Online (Sandbox Code Playgroud)

GET方法工作正常.当在get页面上生成的表单POST时,我收到路由错误,就像这样开始.

<%= form_for @user, :url => reset_password_url do |f| %>
Run Code Online (Sandbox Code Playgroud)

看起来像它的发布到正确的位置,如使用"reset_password_url",它的发布到它生成的URL和URL看起来应该......人有什么想法?

UPDATE

  • 我正在使用Rails 3.0.4
  • 除了我在这里提到的那些之外,我已经尝试取出所有其他路线,但我仍然无法弄清楚为什么它不起作用.

routing named-routing ruby-on-rails-3

1
推荐指数
1
解决办法
5385
查看次数