2009-12-18 78 views
0

我正在构建一个项目管理应用程序,并且需要一些关于如何传递参数的帮助(我认为这就是你怎么说的)。这是我正在做的事情。收集额外的参数Ruby on Rails

我有一张名为“提案”的表格,“提案”允许您为每个提案创建多个概念。我有一个名为“概念”的表格,用户可以在每个“概念”上“评论”。我设置的方法是生成一个名为concept_comments的表。

当前评论仅与概念相关,但我希望显示该特定提案的所有概念的所有评论。我猜测他必须处理两件事:

  1. 包括另一行以在创建评论时收集proposal_id。
  2. 将has_many:concept_comments分配给model/proposal.rb文件。
  3. 添加map.resources:proposals,:has_many =>:concept_comments。

不知道这是否正确,但这是在我的脑海。目前为止我所做的只是在我的concept_comments表中创建了一个名为proposal_id的列。这里是我的“创造” concept_comments_controller.rb代码:

def create 
    @concept = Concept.find(params[:concept_id]) 
    @concept_comment = @concept.concept_comments.create!(params[:concept_comment]) 
    respond_to do |format| 
     format.html { redirect_to @concept } 
     format.js 
    end 
    end 

不太知道如何告诉它也收集PROPOSAL_ID。不知何故,我需要告诉它查看已传入的concept_id,然后从概念表中提取proposal_id号码,并将其传递给concept_comments表中的proposal_id。

我的想法是,我可以在所有具有proposal_id的条目上调用concept_comments表。

我甚至不确定这是否有道理。

回答

1

好 - 你可以通过在提案ID,但是,如果你已经有了一个concept_comment ID,你并不需要一个提案ID

@proposal_comments = ConceptComment.all(:joins => :concept, 
             :conditions => ["concepts.proposal_id = ?", 
             @concept_comment.concept.proposal_id]) 

凡@concept_comment是在意见中的一员行动控制器 - 对于收集操作,您需要传入提案ID并将其替换为@ concept_comment.concept.proposal_id

+0

是该代码的问号部分还是我应该放在那里的东西?另外,我可以从概念上看到你在说什么,但白话是自从我新的东西以来杀死了我。你是说如果我把这段代码放在我的控制器中,我可以从某处引用@proposal_comments? – bgadoci 2009-12-19 03:12:03

+0

是的,问号是一个绑定变量,例如, :conditions => [“foo =?”,bar]相当于:conditions =>“foo =#{bar}”,但是bar会被转义。 如果你把它放在你的控制器中,你可以在你定义它之后从你的视图和控制器访问@proposal_comments。 – 2009-12-19 11:05:48

0

难道你不能只是遍历所有给定的提案的概念,并收集他们的意见到一个大阵列,或者这是将发生数百万次的事情?

+0

正如您可能会告诉我对所有这些都是新手。绝对不会发生数百万次...永远。我之前从未做过这些......我将如何着手实施你上面提到的内容? – bgadoci 2009-12-19 00:12:06

+0

你应该学习Ruby。 – 2009-12-19 15:12:05