2013-01-09 27 views
1

我有2个型号。任务和位置has_one关系控制器更新导轨3

每个任务HAS_ONE位置

task.rb

has_one :location 

我想创建我的位置模型控制器。 这是新形式

<%= form_for(@task.build_Location, :url => task_Location_path(@task)) do |f| %> 
     Fields 
     <%= f.submit %> 
    <% end %> 

和编辑表单

<%= form_for(@task.Location, :url => task_Location_path(@task)) do |f| %> 
     Fields 
     <%= f.submit %> 
    <% end %> 

目前所有功能与更新除外正常运行。

def create 
    @location = @task.create_Location(params[:location]) 
end 
def update 
    @location = @task.locations.find(params[:id]) 
end 

什么是定义此方法的正确方法?

+1

'@ location.update_attributes(PARAMS [:位置])'可以工作 – MrYoshiji

回答

1
def update 
    @location = @task.location.update_attributes(params[:location]) 
end 
2

并不完全知道你正在尝试做的,但...

通常希望通过它的ID访问@task;另外,如果has_one,它不会被复数化。

如果你试图更新任务的名称,以 '东西',你可以这样做:

def update 
    @location=Location.find(params[:id]) 
    @location.task.name="something" 
    @location.save 
end 
+0

我只是希望更新方法正确更新表单中指定的属性。 – capcode01

+0

你会想要像capcode的东西;也看看attr_accessible - 需要类似tasks_attributes – timpone

+0

我感谢你的帮助,你让我指出了正确的方向。上面的解决方案是最终为我工作的。谢谢 – capcode01