0

サンプルというモデルがあります。簡単にするために、「サンプル」には「名前」、「価格」、および「承認済み」フィールドがあります。

「承認済み=「偽」」のすべてのサンプルをリストするページが必要です。このページでは、サンプル フィールドを編集し、完了したら承認済みチェックボックスをオンにし、フォーム ボタンを押して、選択したすべてのサンプル フィールドを承認できるようにしたいと考えています。

Railscast #198 を見ましたが、避けたい前のページがあります... 彼はすべてのサンプルをリストした Web ページを持っていて、編集したいものをチェックし、最終的に「個別編集」ページにアクセスしました。このページをスキップして、承認ページに直接移動したいです。

私のサンプルコントローラーには次のものがあります:

def edit_individual
   @samplestoapprove = Sample.where(:approve => 'false')
end

私のroutes.rbには次のものがあります:

resources :samples, :collection => { :edit_individual => :post, :update_individual => :put }

ここではコントローラーの「update_individual」コードを無視すると、未承認のサンプルを一覧表示できるかどうかを確認するために、サンプル内にビューを作成しました。私はそれを「edit_individual.html.erb」と呼びました

<% title "Edit Samples" %>
<%= form_tag update_individual_samples_path :method => :put do  %>
<%= for sample in @samplestoapprove %>
    <%= fields_for "samplestoapprove[]", sample do |f| %>
        <h2><%= f sample.id %></h2>
    <%= end %>
<%= end %>
<p><%= submit_tag "Approve" %></p>
<%= end %>

その後、「localhost:3000/samples/edit_individual」にアクセスしようとしましたが、「Couldn't find Sample with id=edit_individual」というエラーが表示されました。

誰でも私を助けることができますか?この「edit_individual」へのリンクを含む「承認」というメニューのオプションが必要です。これをクリックすると、前述のフォームで承認されるすべてのサンプルが表示されます...これは簡単に達成できますか? 私は正しい道を進んでいますか?

それとも、データグリッドのようなものを選ぶべきですか? たとえばhttp://www.tutorialized.com/tutorial/Editable-Datagrid-for-Ruby-on-Rails-Built-with-dhtmlxGrid/60309のように

この問題に関連するroutes.rbのコードは次のとおりです。

resources :samples, :collection => { :get => :edit_individual,
  :update_individual => :put}
4

1 に答える 1

1

ルートには が:edit_individual => :postありますが、ブラウザで のように URL にアクセスするとhttp://localhost:3000/samples/edit_individual、GET リクエストが実行されます。

Railsサーバーが実行されているログを見ると、そのURLにアクセスしたときのリクエストがSampleController#showアクションに送らedit_individualれ、あるべき1つのサンプルのIDとして使用しようとしていることがわかると思います示す。

Railsルーティングガイドセクション2.10.2に示されているように、ルートをこれに変更することをお勧めします:

resources :samples do
  collection do
    get 'edit_individual'
  end
end
于 2013-09-24T00:32:24.687 に答える