还是非常棒的铁轨让我裸露了一段时间......
我有一个名为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”的链接,当我点击它时,它会显示所有样品都要通过前面提到的形式批准...这很容易实现吗?我走的是正确的道路?
或者我应该选择像datagrid这样的东西?例如http://www.tutorialized.com/tutorial/Editable-Datagrid-for-Ruby-on-Rails-Built-with-dhtmlxGrid/60309
EDIT 这是我的routes.rb上与此问题相关的代码:
resources :samples, :collection => { :get => :edit_individual,
:update_individual => :put}
答案 0 :(得分:1)
在您的路线中,您有:edit_individual => :post
,但是当您在浏览器中访问网址时就像使用http://localhost:3000/samples/edit_individual
一样,那就是在执行GET请求。
我猜你是否查看运行Rails服务器的日志,当你访问该URL时,你会看到你的请求是你的SampleController#show action并尝试使用edit_individual
as应显示的一个样本的ID。
我建议您将路线更改为此Rails routing guide section 2.10.2:
resources :samples do
collection do
get 'edit_individual'
end
end