Ruby on rails 轨道小循环误差
我有一个工作模式,它有很多工作机会,用户可以接受或拒绝这些工作机会,但是当用户接受工作机会时,我怎么做,不能创建更多的工作机会?我试着这样做,它可以工作,但它复制了输入框。那么我做错了什么,或者我怎样才能用另一种方式来做呢Ruby on rails 轨道小循环误差,ruby-on-rails,Ruby On Rails,我有一个工作模式,它有很多工作机会,用户可以接受或拒绝这些工作机会,但是当用户接受工作机会时,我怎么做,不能创建更多的工作机会?我试着这样做,它可以工作,但它复制了输入框。那么我做错了什么,或者我怎样才能用另一种方式来做呢 #show.html.haml - if @job.offers.blank? = render 'offers/form' - @job.offers.each do |f| - if @job.offers.find(f).status == false ||
#show.html.haml
- if @job.offers.blank?
= render 'offers/form'
- @job.offers.each do |f|
- if @job.offers.find(f).status == false || @job.offers.find(f).status == nil
= render 'offers/form'
- else
cannot do that
#offers/_form.html.haml
= simple_form_for([@job, @job.offers.build]) do |f|
= f.input :pirce_offer
= f.button :submit
你需要把自己等同于;无论何时在Ruby中创建“块”,本质上都类似于调用函数,包括: 除此之外,我不明白调用构建新报价的表单的目的是什么 您正在循环浏览一份工作,使用状态条件来确定用户是否应该创建一份工作。。。。然而,如果该提议存在,用户是否已经发布了提议 此外,您正在为表单使用一组全新的数据:
= simple_form_for([@job, @job.offers.build]) do |f|
= f.input :pirce_offer
= f.button :submit
您不应该使用以下内容:
好吧,我明白了——你有一种“拍卖”系统,在那里出价被接受/拒绝。如果先前的报价被拒绝,您将有能力提出新报价。。。。。。。。。。。这还很粗略
当用户接受报价时,无法创建更多的报价,我如何做到这一点 您需要在视图和模型中使用一些验证 大概是这样的:
#app/models/offer.rb
class Offer < ActiveRecord::Base
validates :user_id, uniqueness: { scope: :job, message: "Only one offer per job" }
end
#app/models/offer.rb
类提供
如果你描述一下你希望这些工作/提供如何工作,我可以创建一个更完整的答案。当你迭代
@job.offers
时,该循环中的每个f
都是一个提供
。(请使用描述性变量名,例如“offer”,它使事情更具可读性)。然后,如果@job.offers.find(f.status),您就可以执行——这很奇怪。你为什么再查一遍?如果f.status==false,为什么不直接说?另外,如果f.status.blank?
而不是测试它是否等于false或nil.Ohh,则可以使用。但是当我测试f.status==false | | f.status==nil | | f.status.blank?
时,它不起作用,我的意思是表单
没有呈现,当status.blank?
谢谢,我想这样做:用户(卖家)可以创建作业
,用户(买家)此作业的任何部分都可能创建报价
,当卖方接受报价
时,向此作业
提供新的报价的能力被阻止。
= simple_form_for([@job, f]) do |f|
= f.input :pirce_offer
= f.button :submit
#app/models/offer.rb
class Offer < ActiveRecord::Base
validates :user_id, uniqueness: { scope: :job, message: "Only one offer per job" }
end