我可以使用没有数据库的资源路由(没有id)

时间:2013-09-24 03:56:08

标签: ruby-on-rails ruby view controller routing

我正在构建一个没有模型,没有数据库的UI应用程序。它对所有业务逻辑使用Web服务调用。我在完成路由时遇到了难以置信的困难。我仍然有像workstations这样的实体。我在我的routes resource :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 个答案:

答案 0 :(得分:1)

你当然可以使用没有模型对象或id的restful路径。你拥有的一切似乎都很好,我甚至在当地试过,工作过。

如果您正在使用rails s进行测试,您可能需要重新启动,过去我遇到了重新启动的路由问题。

相关问题