我不确定在这里发布什么脚本。我正在尝试完成一个教程,它希望我创建广告。我制作了控制器/模型,但我有几个问题。
我的索引显示了所有广告,但是当我尝试创建广告时,我收到了错误
未定义的方法`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还没有相关性。
答案 0 :(得分:1)
命名控制器的rails约定是复数。它可以使用单数,但它会让你遇到像现在这样的问题。因此,将您的控制器重命名为复数版本,它应该没问题。
另外
resources :posts
resources :advertisement
不一致,我建议您保留路线名称复数。
答案 1 :(得分:1)
map.resources:dogs#=&gt;炸毁map.resources:狗#好,但是...... dogs_path#=&gt;炸毁dog_path#=&gt;确定
根据我在另一个帖子中找到的输入,这让我意识到我需要一个多个控制器。
将控制器重新创建为复数(广告)已解决的问题。