Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道小循环误差_Ruby On Rails - Fatal编程技术网

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