我的 Ruby on Rails Web 应用程序有问题。
我有一个名为Source的模型类,在我的routes.rb中,我添加了以下配置:
namespace :admins do
resources :sources do
collection do
get 'batch_new'
post 'batch_create'
end
end
end
当我运行时rake routes
,我可以看到:
admins_source GET /admins/sources/:id(.:format) admins/sources#show
PUT /admins/sources/:id(.:format) admins/sources#update
DELETE /admins/sources/:id(.:format) admins/sources#destroy
但是当我通过单击链接或表单提交来发送这些请求时,我总是得到 404。
这是views/admins/sources/_form.html.erb中的代码
<%= form_for [:admins, @source] do |f| %>
<% if @source.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@source.errors.count, "error") %> prohibited this source from being saved:</h2>
<ul>
<% @source.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :url %>
<%= f.text_field :url %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
这是我在views/admins/sources/index.html.erb上的Destroy链接的代码:
<%= link_to 'Destroy', admins_source_url(source), method: :delete, data: { confirm: 'Are you sure?' } %>
这是SourcesController中的代码
def destroy
@source = Source.find(params[:id])
@source.destroy
respond_to do |format|
format.html { redirect_to admins_sources_url }
format.json { head :no_content }
end
end
这个问题只发生在生产环境中。开发环境刚刚好。
在启动我的服务器(独角兽)之前,我还为生产环境进行了资产预编译。我不知道如何解决这个问题。
这是我的环境:
操作系统:Ubuntu Linux 12.04 LTS
红宝石版本:2.0.0-p0
导轨版本:3.2.13
Rails 服务器:独角兽 4.6.2
生产数据库:MySQL
开发数据库:sqlite3