我的persons
视图的编辑页面中有以下内容:
<%= form_for @person do |f| %>
<%= label_tag :city %>
<%= f.text_field :city %>
<%= label_tag :state %>
<%= f.text_field :state %>
<%= label_tag :name %>
<%= f.text_field :name %>
<%= f.submit %>
<% end %>
我的想法是,我可以从此视图更新:city
模型上的:state
,:name
和@person
属性。
我的控制器需要做些什么来实现这一目标?我的路线正确通过,到目前为止我的控制器中有这个:
def update
@person = Person.find(params[:id])
@person.update_attributes!(@person_params)
redirect_to @person
end
然而,这只是重新定向到我的@person的显示页面,而不是实际更新模型上的属性。我在这里缺少什么?
答案 0 :(得分:1)
应该是这样的:
def update
@person = Person.find(params[:id])
respond_to do |format|
if @peron.update_attributes(params[:person])
format.html { redirect_to people_url, notice: "#{@person.name} was updated." }
else
format.html { render action: "edit" }
end
end
end
答案 1 :(得分:0)
您可以在控制器更新操作中执行类似的操作。
将Person属性作为强参数传递。 这是首选方法,因为建议使用强对数。
def update
@person = Person.find(params[:id])
@person.update(person_params)
redirect_to @person
end
将其设为私有方法:
private
def person_params
params.require(:person).permit(:city, :state, :name)
end