ruby-on-rails – Rails Routing – :action =>’new’返回
我正在为名为“External
Database”的模型编写代码.
模型文件在类声明之外没有代码.我添加了index,new,show和_form .html.erb的视图页面. config / routes.rb包含行资源:external_databases.该模型目前不包含嵌套资源.此应用程序中还声明了其他模型,但目前它们都没有与此模型交互,并且在声明资源之前它们都经过测试并且功能和关闭:external_databases. 我有一个从索引视图到new_external_database_path的链接,其行为与{:action =>完全相同“new”,:controller => “external_database”}如果我正确关注. 这理论上应该加载application / external_databases / new,它将呈现_form.html.erb. _form的第一行是<%= form_for(@ external_database)do | f | %GT; 使用/ new链接时会出现帖子标题中所述的问题. url application / external_databases / new出现以下错误: 没有路线匹配{:action =>“show”,:controller =>“external_databases”} 当我使用rails控制台创建数据成员时,它通过索引和显示正确显示. edit方法使用相同的_form文件,并成功编辑控制台创建的数据成员.毁灭也功能. ……那么为什么不认识新方法呢? 我的这个模型的控制器代码: class ExternalDatabasesController < ApplicationController def index @external_databases = ExternalDatabase.all respond_to do |format| format.html # index.html.erb format.json { render :json => @external_databases } end end # POST /external_databases # POST /external_databases.json def new @external_database = ExternalDatabase.new respond_to do |format| format.html # new.html.erb format.json { render :json => @external_database } end end def show @external_database = ExternalDatabase.find(params[:id]) respond_to do |format| format.html # show.html.erb format.json {render :json => @external_database } end end def create @external_database = ExternalDatabase.new(params[:external_database]) respond_to do |format| if @external_database.save format.html {redirect_to @external_database,:notice => "New External Database Profile was created successfully!"} format.json {render :json => @external_database,:status => :created,:location => @external_database} else format.html {render :action => "new"} format.json { render :json => @external_database.errors,:status => :unprocessable_entity } end end end #GET /external_databases/1/edit def edit @external_database = ExternalDatabase.find(params[:id]) end # PUT /external_databases/1 # PUT /external_databases/1.json def update @external_database = ExternalDatabase.find(params[:id]) respond_to do |format| if @external_database.update_attributes(params[:external_database]) format.html {redirect_to @external_database,:notice => "External Database Profile was updated successfully!" } format.json {head :ok} else format.html { redner :action => "edit" } format.json {render :json => @external_database.errors,:status => :unprocessable_entity } end end end # DELETE /external_databases/1 # DELETE /external_databases/1.json def destroy @external_database = ExternalDatabase.find(params[:id]) @external_database.destroy respond_to do |format| format.html { redirect_to external_databases_rul } format.json { head :ok } end end end 更新:添加routes.rb和Views代码 我的routes.rb文件: App::Application.routes.draw do resources :type_as do resources :type_bs end resources :type_bs do resources :type_as resources :type_cs end resources :type_cs do resources :type_bs end resources :external_databases root :to => "home#index" end 浏览次数: external_databases_form <%= form_for(@external_database) do |f| %> <div class="field"> <%= f.label :name %><br/> <%= f.text_field :name %><br/> </div> <div class="field"> <%= f.label :description %><br/> <%= f.text_field :description %><br/> </div> <div class="field"> <%= f.label :url %><br/> <%= f.text_field :url %><br/> </div> <div class="actions"> <%= f.submit %> </div> <% end %> index.html.erb <p id="notice"><%= notice %></p> <h1>External Databases</h1> <table border="1"> <tr> <th>Database Name</th> </tr> <% @external_databases.each do |exdb| %> <tr> <td><%= exdb.name %></td> <td><%= truncate(exdb.description) %></td> <td><%= link_to 'Show',exdb %></td> <!-- link_to.... :target => "_blank" will open the url in a new window --> <td><%= link_to 'Visit',exdb.url,:target => "_blank" %></td> <td><%= link_to 'Edit',edit_external_database_path(exdb)%></td> <td><%= link_to 'Destroy',exdb,:confirm => 'Are you sure?',:method => :delete %></td> </tr> <% end %> </table> <br/> <%= link_to 'New External Database Profile',{ :action => "new",:controller => "external_databases" }%> | <%= link_to 'Home',root_path %> new.html.erb <h1>Creating a new External Database Profile</h1> <%= render 'form' %> <%= link_to 'Back',external_database_path %> show.html.erb <p id="notice"><%= notice %></p> <table cellspacing="3" cellpadding="5" border="1"> <tr> <th><b>External Database Name</b></th> <th><b>Database ID</b></th> </tr> <tr> <td><%= @external_database.name %></td> <td><%= @external_database.id %></td> </tr> <tr colspan="2"> <th><b>URL</b></th> </tr> <tr colspan="2"> <td><%= @external_database.url %></td> <td><%= link_to 'Visit External Database',@external_database.url %></td> </tr> </table> <p> <h3>Description</h3> <!% @external_database.description.split.scan(/.{,60}/).each do |line| %> <!%= line %><br/> <!% end %> </p> <br /><br /><br /> <%= link_to 'Back to External Database Index',external_databases_path %> | <%= link_to 'Edit',edit_external_database_path(@external_database) %> | <%= link_to 'Destroy',:method => :delete %> 解决方法
您的“返回”链接中的new.html.erb文件中有拼写错误.它应该是:
external_databases_path 您可以将它与上面show.html.erb中您自己的反向链接进行比较. 修复:new.html.erb <h1>Creating a new External Database Profile</h1> <%= render 'form' %> <%= link_to 'Back',external_databases_path %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |