1

我有2个模型。任务和位置

每个任务都有_一个位置

任务.rb

has_one :location

我正在尝试为 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

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

4

2 回答 2

2

不完全确定您要做什么,但是...

你通常想通过它的 id 访问@task;此外,如果一个 has_one,它不会是复数形式。

如果您尝试将任务的名称更新为“某物”,您可以执行以下操作:

def update
  @location=Location.find(params[:id])
  @location.task.name="something"
  @location.save
end
于 2013-01-09T20:25:04.147 回答
1
def update
  @location = @task.location.update_attributes(params[:location])
end
于 2013-01-09T21:11:18.717 回答