2014-06-06 45 views
1

我的路线是这样看自定义路由与奇异的资源错误

的routes.rb

get '/:pimp_id/mepagers(.:format)',  :to => 'mepagers#index', :as => 'mepagers' 
get '/:pimp_id/mepager/new(.:format)', :to => 'mepagers#new',  :as => 'new_mepager' 
get '/:pimp_id/mepager/edit(.:format)', :to => 'mepagers#edit',  :as => 'edit_mepager' 
get '/:pimp_id/mepager(.:format)',  :to => 'mepagers#show',  :as => 'mepager' 
post '/:pimp_id/mepager(.:format)',  :to => 'mepagers#create', :as => 'create_mepager' 
put '/:pimp_id/mepager(.:format)',  :to => 'mepagers#update' 
patch '/:pimp_id/mepager(.:format)',  :to => 'mepagers#update' 
delete '/:pimp_id/mepager(.:format)',  :to => 'mepagers#destroy' 

我试图采取的形式从

HTTP Verb Path Controller#Action Used for 
GET /geocoder/new geocoders#new return an HTML form for creating the geocoder 
POST /geocoder geocoders#create create the new geocoder 
GET /geocoder geocoders#show display the one and only geocoder resource 
GET /geocoder/edit geocoders#edit return an HTML form for editing the geocoder 
PATCH/PUT /geocoder geocoders#update update the one and only geocoder resource 
DELETE /geocoder geocoders#destroy delete the geocoder resource 

(来源http://guides.rubyonrails.org/routing.html

但是,当我点击/ 1/mepager/new上的提交按钮时,出现以下错误:

Routing Error 
No route matches [POST] "/1/mepager/new" 

我甚至试过后的行动路线更改为/ 1/mepager /新但这​​没有帮助,因为在所有他不能找到mepager帕拉姆然后。 Coudlnt在谷歌上找到类似的东西,所以我希望有人能帮助这个路由让我恶心!

new.html.erb

<%= render 'form' %> 

<%= link_to 'Back', pimps_path %> 

_form.html.erb

<%= form_for 'mepager_path' do |f| %> 

    <% if @mepager.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@mepager.errors.count, "error") %> prohibited this mepager from being saved:</h2> 

     <ul> 
     <% @mepager.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 


<table style="border:1px solid black; border-spacing:5px"; width="1521" bgcolor="#DFDFDF"> 

    <colgroup> 
     <col width="1050"> 
     <col width="300"> 
    </colgroup> 

    <tr> <td> <h1>NEW: ID# Title </td> <td> <h1>Programme: a350</h1></td> </tr> 
</table> 





<p id="notice"><%= notice %> 

<table style="border:1px solid black; border-spacing:5px"; width="1500"; height="640"> 

    <tr> 
     <th rowspan="3"> 
      <table style="border:1px solid black; border-spacing:5px"; width="1150"; height="506"> 
       <colgroup> 
        <col width="675"> 
        <col width="675"> 
       </colgroup> 


       <tr> <th colspan="2" align="left" height="10"> <u><strong>Change description & pictures:</strong></u> </th> </tr> 

       <tr> <th colspan="2" align="left" height="10"> <u><b>Pre:</b></u>          </th> </tr>     
       <tr>  
        <td align="left" valign="top"> <div class="field"> <%= f.text_area :pre, :size=>"100x12"%> </div> </td> 
        <td>  
         <div class="actions">  
          <%= file_field_tag :file %> 
          <%= submit_tag "Upload image" %> 
         </div> 
        </td>  
       </tr> 

       <tr> <th colspan="2" align="left" height="10"> <u><b>Post:</b></u>          </th> </tr> 
       <tr>  
        <td align="left" valign="top"> <div class="field"> <%= f.text_area :post, :size=>"100x12" %> </div> </td> 
        <td> 
         <div class="actions">  
          <%= file_field_tag :file %> 
          <%= submit_tag "Upload image" %> 
         </div> 
        </td> 
       </tr> 




      </table> 
     </th> 
     <td valign="top"> 
      <table style="border:1px solid black; border-spacing:5px"; width="350"; height=135> 
       <colgroup> 
        <col width="160"> 
        <col width="190"> 
       </colgroup> 

       <tr> <th colspan="2" align="left" height="10"> <u><strong>Expected savings/overspend reduction:</strong></u> </th>        </tr>  
       <tr> <td align="left"> h/AC: </td> <td align="left"> <div class="field"> <%= f.number_field :save_h, :size=>5 %> </div> </td>   </tr> 
       <tr> <td align="left"> concessions/AC: </td> <td align="left"> <div class="field"> <%= f.number_field :save_c, :size=>5 %> </div> </td> </tr> 
       <tr> <td align="left"> others: </td> <td align="left"> <div class="field"> <%= f.text_field :save_other, :size=>30 %> </div> </td>   </tr>   
      </table> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <table style="border:1px solid black; border-spacing:5px"; width="350"; height=180> 
       <colgroup> 
        <col width="160"> 
        <col width="190"> 
       </colgroup> 


       <tr> <th colspan="2" align="left" height="10"> <u><strong>Affected domains/responsibility:</strong></u> </th>          </tr>  
       <tr> <td align="left"> Design: </td> <td align="left"> <div class="field"> <%= f.text_field :affect_design, :size=>30 %> </div> </td>  </tr> 
       <tr> <td align="left"> Stress: </td> <td align="left"> <div class="field"> <%= f.text_field :affect_stress, :size=>30 %> </div> </td>  </tr> 
       <tr> <td align="left"> Manufacturing: </td> <td align="left"> <div class="field"> <%= f.text_field :affect_me, :size=>30 %> </div> </td> </tr> 
       <tr> <td align="left"> Others: </td> <td align="left"> <div class="field"> <%= f.text_field :affect_other, :size=>30 %> </div> </td>  </tr> 
      </table> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <table style="border:1px solid black; border-spacing:5px"; width="350"; height=135> 
       <colgroup> 
        <col width="160"> 
        <col width="190"> 
       </colgroup> 

       <tr> <th colspan="2" align="left" height="10"> <u><strong>Affected documents:</strong> </u> </th> </tr>  
       <tr> <td align="left"> Drawing number/HTZ: </td> <td align="left"> <div class="field"> <%= f.text_field :affect_dno, :size=>30 %> </div> </td> </tr> 
       <tr> <td align="left"> Material ID: </td> <td align="left"> <div class="field"> <%= f.text_field :affect_mid, :size=>30 %> </div> </td>  </tr> 
       <tr> <td align="left"> Others: </td> <td align="left"> <div class="field"> <%= f.text_field :affect_otherdoc, :size=>30 %> </div> </td>    </tr> 
      </table>    
     </td> 
    </tr> 
    <tr> 
     <td> 
      <table style="border:1px solid black; border-spacing:5px"; width="1150"; height=196> 
       <tr height="10"> <th align="left"> <u><b>Comments/current status/further notes:</b></u> </th> </tr>  
       <tr> <td align="left" valign="top"> <div class="field"> <%= f.text_area :save_h, :size=>"100x8"%> </div> </td>  </tr>  
      </table> 
     </td> 
     <td> 
      <table style="border:1px solid black; border-spacing:5px"; width="350"; height=150> 
       <colgroup> 
        <col width="160"> 
        <col width="190"> 
       </colgroup> 

       <tr> <th colspan="2" align="left" height="10"> <u><strong>General information:</strong></u> </th> </tr> 
       <tr> <td align="left"> Idea owner: </td> <td align="left"> <div class="field"> <%= f.text_field :owner, :size=>30 %> </div> </td>    </tr> 
       <tr> <td align="left"> Date of submission: </td> <td align="left"> autofilled </td>    </tr> 
       <tr> <td align="left"> PPS available: </td> <td align="left"> <div class="field"> <%= f.text_field :pps, :size=>30 %> </div> </td>    </tr> 
       <tr> <td align="left"> Reference (VV/ZTV): </td> <td align="left"> <div class="field"> <%= f.text_field :reference, :size=>30 %> </div> </td> </tr> 
      </table> 
     </td> 
    </tr> 
</table>   



    <div class="actions"> 
    <%= f.submit "Create One Pager" %> 
    </div> 

<% end %> 

回答

0

参见上form_forhere

参照上方连结的文档文件;该form_for方法需要几个参数:

  1. 记录
  2. 选项

在你的情况,我认为你想做什么是经过'mepager_path'命名路径的URL该表格应该提交。但是,您缺少form_for参数的分隔符,因此Rails认为'mepager_path'record参数的值。

record参数是为了传达关于表单应该描述的对象的信息,以便Rails能够以最小的开销为开发人员推断对象的属性,从而为您创建表单。在你的情况,我想你可以尝试像

<%= form_for :mepager, url: mepager_path do |f| %> 

我也是一个Rails小白成才,所以我不能答应你,我的代码示例是正确的,但我的答案的要点是,你form_for参数不正确。作为Rails的新手,我经常因参数不同而感到沮丧。对我来说,众多的表格使他们难以阅读,而且我经常必须确保我不会误解代码。另外,哈希语法总是让我困惑。

我的答案取自here。我发现它是一个非常有用的参考网站。

希望我的回答能帮助你。

+0

据我所知,获取请求只是为了获取用于创建新对象的表单。提交按钮应该会触发post请求,然后'post'/:pimp_id/mepager(.:format)',:to =>'mepagers#create'',但那不会以某种方式发生。是否有可能在某处更改提交功能? – Syk

+0

您可以添加包含您尝试提交的表单的视图吗? – user3337410

+0

添加了视图和渲染后的表单! – Syk