【问题标题】:rails 3.1 has_many :through extra field in join modelrails 3.1 has_many:通过连接模型中的额外字段
【发布时间】:2012-05-16 09:11:46
【问题描述】:

我正在尝试解决 has_many :通过与连接模型中的附加 text_field 关联。现有的答案都不适合我。

我有三个模型:

class Partner
    has_many :prices
    has_many :services, :through => :prices
    accept_nested_attributes_for :prices
end


class Service
    has_many :prices
    has_many :partners, :through => :prices
end


class Price
    belongs_to :service
    belongs_to :partner
end

价格表如下所示:

    id
    partner_id
    service_id
    price

我需要为每个选定的服务输入价格。

视图如下所示:

 <%= form_for(@partner, :url => save_services_path(@partner.id), :remote => true) do |f| %>
  <table>
    <% @services.in_groups_of(4, false) do |services| %>
      <tr>
        <% services.each do |service| %>
          <td>
        <%= check_box_tag "partner[service_ids][]", service.id, @partner.services.include?(service) %> 
        <%= service.name %>
        <%= f.fields_for :prices do |p| %>
          <%= p.text_field :price %>
        <% end %>
          </td>
        <% end %>
      </tr>
    <% end %>
  </table>
<% end %>

复选框工作正常,但我无法更新服务价格。 我相信问题出在嵌套形式的语法中...我尝试了许多不同的组合但没有奏效。

提前致谢!

更新:

控制器动作:

def save_services
  @partner = Partner.find(params[:id])
  @partner.update_attributes(params[:partner]
end

日志:

Started PUT "/partners/save_services/337" for 
Processing by PartnersController#save_services as JS
  Parameters: {"utf8"=>"â", "authenticity_token"=>"xxx", "partner"=>{"service_ids"=>["20", "24"]}, "commit"=>"Save", "id"=>"337"}

【问题讨论】:

    标签: ruby-on-rails ruby associations has-many has-many-through


    【解决方案1】:

    为什么会有这个?

    :url => save_services_path(@partner.id)
    

    在您的表单中?您正在使用@partner 创建表单,但使用服务保存.. 尝试

    <%= form_for(@partner, :url => {:action => 'update'}, :remote => true) do |f| %>
    

    或从日志中发布您的参数

    【讨论】:

    • 我有多对多的关系,所以我通过 save_services 操作为合作伙伴保存服务。这仅适用于复选框,但我需要保存其他参数“价格”。
    • 您能说明如何保存您的服务模型吗?由于服务对嵌套价格一无所知..
    • 我正在尝试解决与@zposloncec 类似的问题,但我正在尝试在创建新记录时执行所有操作,而不是编辑。这可能吗?
    猜你喜欢
    • 2010-09-29
    • 2012-02-28
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2010-11-20
    相关资源
    最近更新 更多