1

rails generate 脚手架控制器 sportler name:string
rails generate model einheit ... sportler_id:integer

/app/controllers/sportlers_controller.rb
..
def add_einheit
sportler = Sportler.find(params[:id])
@einheit = Einheit.new(:sportler => sportler)
渲染 :template => "einheits/edit"
end
..

/app/views/sportles/index.html.erb - 当我将此源代码剪切到路由错误下方时,
不再出现

..

<td><br>
  <%= link_to "Trainingseinheit hinzufügen", :action => "add_einheit", :id => sportler %><br>
</td><br>

..

路线.rb

FITAPP2::Application.routes.draw 做
资源 :sportlers

路由错误

没有路线匹配 {:action=>"add_einheit", :id=>#groesse: "3", created_at: "2012-12-27 15:56:04", updated_at: "2012-12-27 15:56: 04">,
:controller=>"sportlers"}
尝试运行 rake 路线以获取有关可用路线的更多信息。

4

4 回答 4

1

由于路由错误建议您应该“尝试运行rake 路由以获取有关可用路由的更多信息。” 关键是您显然没有为 add_einheit 方法指定路由规则

于 2012-12-27T16:21:23.150 回答
0

我采用了 Kaders 解决方案。它起作用了,但现在我遇到了下一个路由错误。action => sportlers/update_einheit 不起作用。我不明白原理。

FITAPP2::Application.routes.draw 做资源 :sportlers do member do get "add_einheit" get "update_einheit" end end end

我尝试使用第二个条目 get update_einheit 扩展上面的路线 - 它确实功能路由错误

没有路由匹配 {:action=>"update_einheit", :id=>#, :controller=>"sportlers"} 尝试运行 rake 路由以获取有关可用路由的更多信息。

耙路线:

add_einheit_sportler GET /sportlers/:id/add_einheit(.:format) 运动者

add_einheit

update_einheit_sportler GET /sportlers/:id/update_einheit(.:format) 运动者

update_einheit

          sportlers GET    /sportlers(.:format)                    sportlers

指数

                    POST   /sportlers(.:format)                    sportlers

创造

       new_sportler GET    /sportlers/new(.:format)                sportlers

新的

      edit_sportler GET    /sportlers/:id/edit(.:format)           sportlers

编辑

           sportler GET    /sportlers/:id(.:format)                sportlers

节目

                    PUT    /sportlers/:id(.:format)                sportlers

更新

                    DELETE /sportlers/:id(.:format)                sportlers

破坏

于 2012-12-28T18:40:31.237 回答
0

你确定你在sportlers view文件夹下有一个html文件,比如view/sportlers/add_einheit.html.erb?

于 2012-12-27T23:12:10.257 回答
0
resources :sportlers 

此代码将仅创建有关 CRUD 操作的路由(创建、新建、编辑、更新 vss...) 使用“add_einheit”操作编辑 routes.rb ;

resources :sportlers do
    member do
        get "add_einheit"
    end
end

如果您发送像“id”这样的参数,请使用“member do”,否则在您的 routes.rb 文件中使用“collection do”。

于 2012-12-27T16:21:16.973 回答