1

我需要在 create 函数中使用新函数中的 params[:number] ,我该怎么做呢?

def new
   @test_suite_run = TestSuiteRun.new

    @tests = Test.find(:all, :conditions => { :test_suite_id => params[:number] })
end

def create        
    @test_suite_run = TestSuiteRun.new(params[:test_suite_run])

    @tests = Test.find(:all, :conditions => { :test_suite_id => //I need the same params[:number] here})   
end

编辑:我想我对 new 和 create 之间的区别感到困惑。我通过将参数 :number 传递给 new 来获取它。

new_test_suite_run_path(:number => ts.id)

然后我用它来生成表格。我不明白在 create 函数中该做什么。如果我删除控制器中的创建功能,当我以新的形式提交表单时,它会给我一个错误,说控制器中没有创建操作。这是否意味着我必须将所有新内容移到 create 函数中?这怎么可能,我必须创建一个 create.html.erb 并移动我的所有表单信息吗?

4

2 回答 2

5

您可以使用 Flash: http ://api.rubyonrails.org/classes/ActionDispatch/Flash.html

flash 提供了一种在动作之间传递临时对象的方法。你放在闪光灯里的任何东西都会暴露在下一个动作中,然后被清除。


def new
   @test_suite_run = TestSuiteRun.new
   @tests = Test.find(:all, :conditions => { :test_suite_id => params[:number] })

   flash[:someval] = params[:number]
end

def create        
    @test_suite_run = TestSuiteRun.new(params[:test_suite_run])

    @tests = Test.find(:all, :conditions => { :test_suite_id => flash[:someval] })   
end
于 2012-07-10T01:15:34.100 回答
2

我想我对 new 和 create then 之间的区别感到困惑。

让我们先解决这个问题。

new方法为 Rails 构建 TestSuiteRun 实例的表单生成视图。此实例仅暂时存在于内存中。

create方法获取表单中输入的数据,并将创建的实例永久保存到数据库中。

我认为你不需要改变你的new方法。

尝试将您的create方法更改为此。

def create
  @test_suite_run = TestSuiteRun.new(params[:test_suite_run])
  @test_suite_run.save
end
于 2012-07-10T01:51:11.820 回答