当我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 %>
我首先尝试join
或include
关系模型,但无法做到。有些人说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 %>
答案 0 :(得分:1)
尝试使用没有_attributes
后缀的关系名称:
<%= f.simple_fields_for :config_file do |n| %>
<%= n.input :json %>
<% end %>