【问题标题】:passing in parent id to remote_form partial on item creation在项目创建时将父 ID 传递给 remote_form 部分
【发布时间】:2009-09-30 20:15:41
【问题描述】:

我仍然对 Rails 中的控制器有点模糊,尤其是因为很多事情似乎在幕后神奇地发生了,而在这种情况下并没有发生。

假设我有一个人物模型,其中有很多照片(使用回形针)并且有很多喜欢的引语。引号可以包含文本、作者属性等。在这两个模型中,它们都被设置为属于我的人物模型。

在一个新的人员表单中,我在其他地方使用了一些代码来创建一张新照片:

<% form.fields_for :screenshots, :html => { :multipart => true }  do |screen_form| %>
    <%= render :partial => 'screenshot', :locals => { :form => screen_form } %>
<% end %>

部分非常简单,就像这样(减去我为嵌套模型放入的一些 ajax javascript 内容):

<%= form.label :photo, "Screenshot:" %>
<%= form.file_field :photo %>

这一切都很好,并且神奇的是,人的 ID 在 person_id 中创建时与屏幕截图相关联。我什至没有用于屏幕截图的控制器,但它仍然可以工作。

但是,它不适用于我的报价。

<% remote_form_for :quote, :html => { :method => :put }, :url => {:controller => "quote", :action => "create", :person_id => @person.id}  do |quote_form| %>
<%= render :partial => 'quote', :locals => { :form => quote_form } %>
 <% end %>

这个的部分也很简单。

  <%= form.label :quote_text %>
  <%= form.text_field :quote_text %>
    .........
 <%= form.submit 'Create' %>

我不确定是否可以将个人 ID 放在那里,但它没有抱怨。然而,它也没有奏效。引号控制器非常简单。

  def create
    @quote = Quote.create(params[:quote])
  end

目前它已放入数据库中,但 person_id 未填充,因此我无法提取与特定人员关联的引号。抱歉,如果这是一个愚蠢的问题,但我是通过调整教程并将它们混合在一起来学习 Rails,所以请耐心等待:) 照片的东西如何在没有控制器或特殊东西的情况下工作,这有点神秘.

【问题讨论】:

    标签: ruby-on-rails ajax


    【解决方案1】:

    第一个表单是一个人表单,主要有与之关联的快照字段,因此查看您的 HTML,您会发现类似 person[snapshots][photo] 的内容,此表单将提交给 person 控制器。

    将人员 ID 传递给第二个表单是使其工作的关键,但是它不起作用有点奇怪,表单将提交给报价控制器。您确定(查看日志)params 哈希具有 person_id 属性吗?

    【讨论】:

    • 我刚刚检查了哈希并且 app_id 在引号哈希之外。所以是这样的: {"commit"=>"Create", "authenticity_token"=>"3l5x22JGrXw+Wk1r9JLEK3em/LMKKaC7Z8Emv0bmlfw=", "person_id"=>"2", "quote"=>{...} .不确定我是否能弄清楚如何将其放入其中,但我会尝试..
    • 有人告诉我使用隐藏的表单值,这很有效。在部分: @person.id %>
    猜你喜欢
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2019-06-18
    • 2019-04-01
    • 1970-01-01
    相关资源
    最近更新 更多