在EDIT上不返回嵌套的属性值

时间:2014-09-06 17:54:31

标签: ruby-on-rails ruby-on-rails-4 edit nested-attributes

当我edit一个对象时,关系对象值不会以edit形式显示。另一方面,创作正在发挥作用。

以下是模型:

class LogFile < ActiveRecord::Base
 has_one :config_file, dependent: :destroy
 accepts_nested_attributes_for :config_file, allow_destroy: true
end

class ConfigFile < ActiveRecord::Base
  belongs_to :log_file
end

这是控制器:

 # GET /log_files/1/edit
  def edit
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_log_file
      @log_file = LogFile.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def log_file_params
      params.require(:log_file).permit(
                                       :name,
                                       :user_id,
                                       config_file_attributes: [:id, :json, :_destroy]
                                       )
    end

表格如下:

 <%= f.simple_fields_for :config_file_attributes do |n| %>
    <%= n.input :json %>
 <% end %>

我首先尝试joininclude关系模型,但无法做到。有些人说id函数中的permit()可以解决问题,但我的情况没有任何变化。

有人可以建议尝试一下吗?


当我将以下代码放在表单模板中时:

<%= debug @log_file %>

不会返回关于关系模型的详细信息。


这是我使用接受的答案申请的解决方案:

  <% if @log_file.id %>
      <%= f.simple_fields_for :config_file do |n| %>
          <%= n.input :json %>
      <% end %>
  <% else %>
      <%= f.simple_fields_for :config_file_attributes do |n| %>
          <%= n.input :json %>
      <% end %>
  <% end %>

1 个答案:

答案 0 :(得分:1)

尝试使用没有_attributes后缀的关系名称:

<%= f.simple_fields_for :config_file do |n| %>
  <%= n.input :json %>
<% end %>