Rails路线问题 - 多个还是单个?

时间:2015-10-03 23:13:49

标签: ruby-on-rails

我不确定在这里发布什么脚本。我正在尝试完成一个教程,它希望我创建广告。我制作了控制器/模型,但我有几个问题。

我的索引显示了所有广告,但是当我尝试创建广告时,我收到了错误

  

未定义的方法`advertisements_path'对于#<#:0x007fa84c5a59f0>

现在我看到它提到'广告'所以我知道它需要复数。我的控制器是单一的。如果我进入路线,我补充说 资源:广告AS WELL,它会 - 允许我创建一个广告,但是当它提交它时,我会收到错误(可能因为一切仍然设置为AdvertisementController(Singular)。

我不太确定要发布什么代码,所以我会发布我认为相关的内容。

Rails.application.routes.draw do
  resources :posts
  resources :advertisement

这是我可以添加多个资源以使其“加载”的地方。但未能保存。

<%= form_for @advertisement do |f| %>
  <div class="form-group">
      <%= f.label :title %>
      <%= f.text_field :title, class: 'form-control', placeholder: "Enter post title" %>
  <div class="form-group">
    <%= f.submit "Save", class: 'btn btn-success' %>
  </div>

这是我在&#34; form_for @广告&#34;上发出初步警告的地方。线。

  def create
@advertisement = Advertisement.new
@advertisement.title = params[:advertisement][:title]
@advertisement.copy = params[:advertisement][:copy]
@advertisement.price = params[:advertisement][:price]
if @advertisement.save
  flash[:notice] = "The Ad was saved."
  redirect_to @advertisement
else
  flash[:error] = "There was an error saving the ad. Please try again."
  render :new
end

这引用了我从广告控制器创建的def。

(基本上,本教程的目的是复制我们为Posts做的几乎完全。它一直有效。直到现在。功能一直有效,直到我创建一个新功能。

我已经工作了几个小时,但我很难理解何时使用复数与单数。 (目前还没有集成,所以belongs_to还没有相关性。

2 个答案:

答案 0 :(得分:1)

命名控制器的rails约定是复数。它可以使用单数,但它会让你遇到像现在这样的问题。因此,将您的控制器重命名为复数版本,它应该没问题。

另外

resources :posts 
resources :advertisement

不一致,我建议您保留路线名称复数。

答案 1 :(得分:1)

  
    

map.resources:dogs#=&gt;炸毁map.resources:狗#好,但是...... dogs_path#=&gt;炸毁dog_path#=&gt;确定

  

根据我在另一个帖子中找到的输入,这让我意识到我需要一个多个控制器。

将控制器重新创建为复数(广告)已解决的问题。