【问题标题】:rails select_tag association edit actionrails select_tag 关联编辑操作
【发布时间】:2011-05-06 13:39:53
【问题描述】:

我有一个包含许多任务的项目模型。

在 /tasks/new 视图中,我有一个选择标签,允许我为新任务选择项目:

<%= f.label :project_id %>
<%= f.select(:project_id, options_from_collection_for_select(@projects, "id", "name")) %><br />

这是在 _form.html.erb 部分中,它也被编辑(tasks/8/edit)调用。

但是,在编辑中,我得到“你没有预料到它有一个 nil 对象!”错误。

我认为这是因为 f.select 没有从 Projects 模型中调用先前选择的项目。

有没有办法从 _form.html.erb 进行调用?

非常感谢。

【问题讨论】:

    标签: ruby-on-rails forms select


    【解决方案1】:

    如果这没有帮助,请发布来自 new.html.erb 和回溯的部分调用,但我相信这是两件事之一:

    您没有将f 变量添加到部分调用中。 f 是页面的局部变量,因此您需要使用 :locals 选项将其传递给局部变量。像这样:

    <%= render :partial, :locals => {:f => f} %>
    

    或者@projects有可能是nil,请确保它是在控制器中设置的。

    【讨论】:

    • 嗯。在任务控制器中,我有: def edit @task = Task.find(params[:id]) @project = @task.project end 并在将 :locals => {:f => f} 添加到 edit.html 之后.erb,我得到 #:0x103af3238> 的未定义局部变量或方法“f”
    • 我不认为这是部分问题。我删除了部分并将其放回 edit.html.erb 文件中。我仍然得到“你没想到它有一个 nil 对象!”错误。我相信我根本没有将项目 ID 传递回编辑模板,所以它被 f.select 混淆了
    【解决方案2】:

    试试这个!
    &lt;%= render 'partial', :f =&gt; f %&gt;
    在您的编辑操作视图中,您将拥有 -
    &lt;%= render 'from', :f =&gt; f %&gt;

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多