【发布时间】:2016-02-26 21:41:01
【问题描述】:
我正在尝试将渲染代码放入我的 edit.html.erb 并创建 _form.html.erb。 我有这些用于 edit.html.erb 的代码
<h1>Main#edit</h1>
<h1>Editing zone</h1>
<%= render partial: "form", locals: {addresses: @addresses} %>
以及 _form.html.erb 的这些代码
<%= form_for(addresses)do |f| %>
<p>
<b>name</b><br>
<%= f.text_field :address %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
而addresses是一组地址。
我有这个错误: 找不到带有 'id'= 的地址 提取的源代码(第 21 行附近):
def edit
@address = Address.find(params[:id]) this is 21th line
if request.post?
if (@address.update_attributes(address_params))
redirect_to :action=>"index"
您能帮我检查一下我的代码有什么问题吗?
这是我的控制器的代码:
class MainController < ApplicationController
def index
@addresses = Address.all
end
def new
end
def add
address = Address.new(address_params)
if (address.save)
redirect_to :action=>"index"
else
flash[:notice]="Error saving, try again"
redirect_to :action=>"index"
end
end
def edit
@address = Address.find(params[:id])
if request.post?
if (@address.update_attributes(address_params))
redirect_to :action=>"index"
else
render :action=>"edit"
end
end
end
def delete
address = Address.find(params[:id])
address.destroy
redirect_to :action=>"index"
end
private
def address_params
params.require(:address).permit(:name,:address,:email,:phone)
end
end
这是我的模型: my data structure
【问题讨论】:
-
原码在github.com/siddharthkaza/addressbook_rails42.git。不好意思,不是未定义变量的错误,我也想知道_form是怎么调用edit函数的。我不明白,如果我需要传递 id 值,我在哪里指定?
-
我不知道部分渲染在 Rails 中是如何工作的。我认为问题可能是因为我忘记了将 id 值传递给编辑函数,或者我的地址以某种方式未被读取(我确定地址 [1] 和更多不是空的)。
-
(1) 您应该多花 一点 时间来格式化您的代码,(2) 您应该发布特定的堆栈跟踪。
-
对不起,我也对此感到困惑..我不知道踪迹,所以我很困惑。这是一个常见的样本。在新视图和编辑视图中都进行了部分渲染,但我不知道它是如何工作的。
标签: ruby-on-rails render partial