2013-09-24 1 views
1

Я создаю приложение пользовательского интерфейса, у которого нет моделей, нет базы данных. Он использует вызовы веб-сервиса для всей своей бизнес-логики. У меня невероятно трудное время, чтобы завершить маршрутизацию. У меня все еще есть объекты вроде workstations. Я объявил в моих routesresource :workstations, что дает мне эти маршруты:Могу ли я использовать маршруты ресурсов без базы данных (без идентификаторов)

 workstations POST /workstations(.:format)  workstations#create 
new_workstations GET /workstations/new(.:format) workstations#new 
edit_workstations GET /workstations/edit(.:format) workstations#edit 
        GET /workstations(.:format)  workstations#show 
        PUT /workstations(.:format)  workstations#update 
        DELETE /workstations(.:format)  workstations#destroy 

, но когда я пытаюсь связать с действием обновления как = link_to "Update", workstations_path, :method => :put я No route matches {:controller=>"workstations", :method=>"put"}. Разве это не тот маршрут, который указан для действия обновления?

Мне интересно, не могу ли я использовать традиционные находчивые маршруты, так как у меня нет ids. Или, может быть, я просто делаю это неправильно.

Просмотр кода (Haml):

%h2 
    %small#application-name-label Technical Support Interface 
.col-md-3 
    %h3 Workstations 
    %button.btn.btn-success.create-button Create Workstation 
    - if @workstations.blank? 
    .no-items-available There are no workstations to display 
    -else 
    = form_tag(controller: "workstations", action: "delete_history_and_queue", method: "post") do 
     %table#workstation-table.table.table-striped.table-hover.table-bordered 
     %thead 
      %tr 
      %th#table-header Name 
      %th#table-header Delete History 
      %th#table-header Delete Queue 
      %th#table-header Update 
      %th#table-header Delete 
     %tbody 
      - @workstations.each do |workstation| 
      %tr 
       %td 
       = workstation[:name] 
       %td 
       = check_box_tag 'delete history', form_class: "checkbox" 
       %td 
       = check_box_tag 'delete queue', form_class: "checkbox" 
       %td 
       = link_to "Update", workstations_path, :action => :update 
       %td 
       = link_to "Delete", workstations_path, :action => :destroy 
    = submit_tag 
.col-md-3 
    %h3 Data Sources 
    %button.btn.btn-success.create-button Create Data Source 
    - if @data_sources.blank? 
    .no-items-available There are no sources to display 
    -else 
    %table.table.table-striped.table-hover.table-bordered 
     %tr 
     %th#table-header Type 
     %th#table-header Name 
     - @data_sources.each do |data_source| 
     %tr 
      %td 
      = data_source[:type] 
      %td 
      = data_source[:name] 

HTML

<body> 
    <div class='whole-page'> 
     <div class='container'> 
     <h1 class='hero-unit' id='application-title'> 
      <div class='row-fluid'> 
      <div class='span1' id='replication-server'> 
       <img alt="Cog_logo" src="/assets/cog_logo.png" /> 
       <img alt="Crs" src="/assets/crs.png" /> 
       Replication Server 
      </div> 
      </div> 
     </h1> 
     </div> 
    </div> 
    <h2> 
     <small id='application-name-label'>Technical Support Interface</small> 
    </h2> 
    <div class='col-md-3'> 
     <h3>Workstations</h3> 
     <button class='btn btn-success create-button'>Create Workstation</button> 
     <form accept-charset="UTF-8" action="/?method=post" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="NQghiooSVtSngRU7K170uxhqJ2N6i9XQ6sP5W+UeKrY=" /></div> 
     <table class='table table-striped table-hover table-bordered' id='workstation-table'> 
      <thead> 
      <tr> 
       <th id='table-header'>Name</th> 
       <th id='table-header'>Delete History</th> 
       <th id='table-header'>Delete Queue</th> 
       <th id='table-header'>Update</th> 
       <th id='table-header'>Delete</th> 
      </tr> 
      </thead> 
      <tbody> 
      <tr> 
       <td> 
       consequatur 
       </td> 
       <td> 
       <input id="delete_history" name="delete history" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <input id="delete_queue" name="delete queue" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <a href="/workstations" action="update">Update</a> 
       </td> 
       <td> 
       <a href="/workstations" action="destroy">Delete</a> 
       </td> 
      </tr> 
      <tr> 
       <td> 
       quia 
       </td> 
       <td> 
       <input id="delete_history" name="delete history" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <input id="delete_queue" name="delete queue" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <a href="/workstations" action="update">Update</a> 
       </td> 
       <td> 
       <a href="/workstations" action="destroy">Delete</a> 
       </td> 
      </tr> 
      <tr> 
       <td> 
       quod 
       </td> 
       <td> 
       <input id="delete_history" name="delete history" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <input id="delete_queue" name="delete queue" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <a href="/workstations" action="update">Update</a> 
       </td> 
       <td> 
       <a href="/workstations" action="destroy">Delete</a> 
       </td> 
      </tr> 
      <tr> 
       <td> 
       reprehenderit 
       </td> 
       <td> 
       <input id="delete_history" name="delete history" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <input id="delete_queue" name="delete queue" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <a href="/workstations" action="update">Update</a> 
       </td> 
       <td> 
       <a href="/workstations" action="destroy">Delete</a> 
       </td> 
      </tr> 
      <tr> 
       <td> 
       laborum 
       </td> 
       <td> 
       <input id="delete_history" name="delete history" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <input id="delete_queue" name="delete queue" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <a href="/workstations" action="update">Update</a> 
       </td> 
       <td> 
       <a href="/workstations" action="destroy">Delete</a> 
       </td> 
      </tr> 
      <tr> 
       <td> 
       quidem 
       </td> 
       <td> 
       <input id="delete_history" name="delete history" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <input id="delete_queue" name="delete queue" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <a href="/workstations" action="update">Update</a> 
       </td> 
       <td> 
       <a href="/workstations" action="destroy">Delete</a> 
       </td> 
      </tr> 
      <tr> 
       <td> 
       laboriosam 
       </td> 
       <td> 
       <input id="delete_history" name="delete history" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <input id="delete_queue" name="delete queue" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <a href="/workstations" action="update">Update</a> 
       </td> 
       <td> 
       <a href="/workstations" action="destroy">Delete</a> 
       </td> 
      </tr> 
      <tr> 
       <td> 
       non 
       </td> 
       <td> 
       <input id="delete_history" name="delete history" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <input id="delete_queue" name="delete queue" type="checkbox" value="{:form_class=&gt;&quot;checkbox&quot;}" /> 
       </td> 
       <td> 
       <a href="/workstations" action="update">Update</a> 
       </td> 
       <td> 
       <a href="/workstations" action="destroy">Delete</a> 
       </td> 
      </tr> 
      </tbody> 
     </table> 
     </form> 
     <input name="commit" type="submit" value="Save changes" /> 
    </div> 
    <div class='col-md-3'> 
     <h3>Data Sources</h3> 
     <button class='btn btn-success create-button'>Create Data Source</button> 
     <table class='table table-striped table-hover table-bordered'> 
     <tr> 
      <th id='table-header'>Type</th> 
      <th id='table-header'>Name</th> 
     </tr> 
     <tr> 
      <td> 
      CIDNE 
      </td> 
      <td> 
      http://block.com/keaton_baumbach 
      </td> 
     </tr> 
     <tr> 
      <td> 
      DCGS 
      </td> 
      <td> 
      http://wolff.info/jace_rice 
      </td> 
     </tr> 
     </table> 
    </div> 
    </body> 
</html> 

ответ

1

Вы можете, конечно, использовать успокоительные маршруты без модельных объектов или идентификаторами. Все, что у вас есть, кажется прекрасным, я даже пробовал его на месте, работал.

Если вы тестируете с помощью rails s, возможно, вам захочется перезапустить, у меня в прошлом были проблемы с маршрутизацией, которые были исправлены повторно.

+0

Итак, теперь я получаю «Действие« показать »не удалось найти для WorkstationsController, который, по-моему, является прогрессом. Мне не нужно действие 'show', поэтому я не уверен, откуда это происходит. Просто для здравомыслия, вы не * имеете * для осуществления действия, просто потому, что маршрут определен или вы? Я предполагаю, что это неверное истолкование «workstations_path», но это не кажется правильным. –

+0

Вы получили бы эту ошибку, если бы попытались «GET» на '/ workstations', и у нее нет метода контроллера для ее обработки. Если вы этого не хотите, вы можете исключить его из сгенерированных маршрутов так: 'resource: worksstations, except: [: show]' –

+0

Я ввел исключение, и теперь я получаю «Нет совпадений маршрута [GET]»/Рабочие станции "' –

Смежные вопросы