【发布时间】:2014-07-11 05:12:16
【问题描述】:
好的,一直在到处寻找这个。尝试了所有解决方案。也许有人可以在这方面提供帮助。
所以,我有一个包含许多网站的 WebRequest 模型。每个网站都属于一个 WebRequest。我的问题是嵌套形式。我已经进入了允许的参数(至少,基于我拥有的文档)并且一切正常,直到我进入服务器日志。发表于下方
class WebRequest < ActiveRecord::Base
has_many :web_sites
accepts_nested_attributes_for :web_sites
end
这是网站模型
class WebSite < ActiveRecord::Base
belongs_to :web_request, dependent: :destroy
end
_form.html.erb
<% 1.times do %>
<%= f.fields_for :web_site do |ff| %>
<%= ff.input :url %>
<%= ff.input :description %>
<% end %>
<% end %>
WebRequests 控制器
class WebRequestsController < ApplicationController
def new
@web_request = WebRequest.new
# @web_request.web_sites.build
end
def index
@web_requests = WebRequest.all
end
def create
@web_request = WebRequest.new(web_request_params)
respond_to do |format|
if @web_request.save
RequestMailer.web_request_submit(@web_request).deliver
format.html { render partial: 'success' }
format.json { render action: 'show', status: :created, location: @web_request }
else
format.html { render action: 'new' }
format.json { render json: @web_request.errors, status: :unprocessable_entity }
end
end
end
def web_request_params
params.require(:web_request).permit(:web_needs, :primary_goal, :secondary_goal, : :call_to_action, :hero_image, :image_count, :existing, :resources, :web_examples, :special_functions, :social_network, web_sites_attributes: [:id, :url, :description])
end
end
这是服务器日志:
Started POST "/web_requests" for 127.0.0.1 at 2014-07-10 15:56:12 -0400
Processing by WebRequestsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"0iisNgGk/AhC4jRrp1cmKWVCBsCcSx5G2dueEI/+p2A=", "web_request"=>{"web_needs"=>"", "primary_goal"=>"", "secondary_goal"=>"", "call_to_action"=>"", "hero_image"=>"", "image_count"=>"", "existing"=>"", "web_site"=>{"url"=>"TROLL", "description"=>"TROLL"}, "resources"=>"", "special_functions"=>"", "social_network"=>""}, "commit"=>"Create Web request"}
Unpermitted parameters: web_site
注意表单字段是如何传递的,但它们在进入数据库时受到限制。
谢谢!
更新::
这是完整的表单路径:
<%= simple_form_for(@web_request) do |f| %>
<% if @web_request.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@web_request.errors.count, "error") %>
prohibited this Web Request from being saved:</h2>
<ul>
<% @web_request.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="container">
<div class="field">
<%= f.input :web_needs, label: 'What web needs do you have?' %>
</div>
<div class="container"><h5>Please list below 5 URL's and explanations of why you like them.</h5></div>
<% 1.times do %>
<%= f.fields_for :web_sites do |ff| %>
<div class="field">
<%= ff.input :url, label: "URL of example site" %>
</div>
<div class="field">
<%= ff.input :description, label: "Description of example site" %>
</div>
<% end %>
<% end %>
<div class="field">
<%= f.input :resources, label: 'Will you be providing any kind of resource on this page? e.g. chord chart download.' %></br>
</div>
</div>
<div class="actions">
<%= f.button :submit, :class => "button" %>
</div>
</div>
<% end %>
更新::完整的错误日志
undefined method `url' for #<ActiveRecord::Associations::CollectionProxy []>
线路在这里
<% 1.times do %>
<%= f.simple_fields_for :web_site, @web_request.web_sites do |ff| %>
<div class="field">
<%= ff.input :url, label: "URL of example site" %> <--ERROR HERE on ':url'
</div>
<div class="field">
<%= ff.input :description, label: "Description of example site" %>
</div>
<% end %>
【问题讨论】:
-
在
web_request_params允许web_sites_attributes应该是web_site。 -
或者
web_site_attributes,我认为它会这样改变 -
@CWitty 这些都不起作用......'web_site' 表示未知属性,'web_site_attributes' 仍然阻止它保存在数据库中
标签: ruby-on-rails ruby