【问题标题】:Create an approval form that lists all unapproved samples and allows to edit/approve them创建一个批准表,列出所有未批准的样品并允许编辑/批准它们
【发布时间】:2013-09-29 00:37:29
【问题描述】:

我有一个名为 sample 的模型。为简化起见,“sample”将包含“name”、“price”和“approved”字段。

我想要一个页面,列出所有“approved = 'false'”的样本。在此页面中,我希望能够编辑示例字段,完成后选中已批准的复选框,然后按表单按钮批准所有选定的示例字段。

我看了 railscast #198 但它有一个我想避免的前一页......他有一个列出所有样本的网页,然后检查他想要编辑的那些,然后他终于可以访问“编辑个人“ 页。我想跳过这个页面,直接进入审批页面。

在我的示例控制器上,我有:

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”,但出现错误“找不到带有 id=edit_individual 的示例”

谁能帮帮我?我想在菜单上有一个名为“Approve”的选项,并带有指向此“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}

【问题讨论】:

    标签: datagrid ruby-on-rails-3.2 railscasts


    【解决方案1】:

    在您的路线中,您有 :edit_individual =&gt; :post,但是当您像使用 http://localhost:3000/samples/edit_individual 一样访问浏览器中的 URL 时,这是在执行 GET 请求。

    我猜如果您查看运行 Rails 服务器的日志,您会发现当您访问该 URL 时,您的请求将转到您的 SampleController#show 操作并尝试使用 edit_individual 作为 ID应显示的一个样本。

    我建议您将路线更改为 Rails routing guide section 2.10.2 中所示:

    resources :samples do
      collection do
        get 'edit_individual'
      end
    end
    

    【讨论】:

    • 您好,感谢您的回复。你在 GET 上是对的,它会转到 SampleController#show。但不幸的是,您的代码不起作用,我在“结束”和“收集做”时收到错误...
    • 你能把你的routes.rb现在有什么吗?
    • 哦,我想知道您的 routes.rb 在您添加我的代码时有什么...我不确定您为什么会收到该错误,因为当我使用我的代码时我没有有。我想知道是不是因为您的路线中有大括号,而我的代码使用了do... end。我认为这是您的 routes.rb 中的代码和我给您的代码之间的交互,但是如果不查看所有代码,很难说问题出在哪里。
    • 哦,等等,我看到你已经编辑了我的代码以适应你的风格。那么现在什么不起作用?
    • 实际上,我以为您将花括号用于块语法,但您将它们用于哈希。我不确定你的语法是否像那样有效——我从来没有用哈希键和值那样做路由。我在文档中没有看到任何关于能够创建这样的嵌套路由的内容——你可能想看看the rails routing guide
    最近更新 更多