【问题标题】:Devise nested attributes form field not showing设计嵌套属性表单字段未显示
【发布时间】:2015-09-02 18:37:40
【问题描述】:

我无法查看表单中的嵌套属性字段。我在jobs/new 视图中,我想要一个用户表单来创建工作和用户。

我在这个答案中拥有一切Rails 4.0 with Devise. Nested attributes Unpermited parameters

我也查看了这个Nested attributes not showing up in simple form

但后一个答案已经适用于我的代码并且没有显示出来。我的代码:

工作模式

belongs_to :user

用户模型

has_many :jobs
accepts_nested_attributes_for :jobs

devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable, :confirmable

工作/新视图

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= devise_error_messages! %>


  <%= f.fields_for :jobs do |builder| %>
    <%= render "job_detail_fields", :f => builder %>
  <% end %>

  <%= f.email_field :email, placeholder: "Enter email", class: "full-width form-field" %>

<% end %>

_job_details_fields

<%= f.text_area :job_description, placeholder: "Job description..." %>

:job_description text_area 未显示。如果我将嵌套属性表单更改为 f.fields_for :job 之类的东西,它会显示,但在提交表单时,我得到 unpermitted paramater job 作为错误。我很确定jobs 是正确的,但我不知道为什么它没有显示。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby forms ruby-on-rails-3 devise


    【解决方案1】:

    啊,查看 Rails Cast 看起来我需要 build :job_description。

    这在我的 Jobs 控制器中修复了 1.times { @resource.jobs.build }

    工作控制器

    def new
        @resource ||= User.new
        1.times { @resource.jobs.build }
    end
    

    【讨论】:

    • 您不需要1.times 只需@resource.jobs.build
    • 是的。谢谢@PiotrKruczek!
    猜你喜欢
    • 1970-01-01
    • 2013-06-05
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多