我需要使用方法,它只在控制器中工作,但我不能实现改变属性。
下面是我的更新操作:
def update
@website = Website.find(params[:id])
respond_to do |format|
if @website.update_attributes(params[:website])
if params[:website][:language] == "Auto"
@website.[:website][:language] = full_language("request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first")
end
format.html { redirect_to @website, notice: 'website was successfully updated.' }
format.js
else
format.html { render action: "edit" }
format.js { render action: "edit" }
end
end结束
我哪里做错了?
发布于 2012-10-02 17:46:44
@website.update_attributes(params[:website])已将其保存到数据库。
@website.[:website][:language] = full_language("request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first")没有任何意义。
@website.language = full_language(request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first)确实如此。还要注意request.env前面的引号被删除了。注意,您需要再次保存更改,因此在更新属性之前移动所有内容并使用一次保存调用是有意义的。
def update
@website = Website.find(params[:id])
@website.attributes = params[:website]
if params[:website][:language] == "Auto"
@website.language = full_language(request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first)
end
respond_to do |format|
if @website.save
format.html { redirect_to @website, notice: 'website was successfully updated.' }
format.js
else
format.html { render action: "edit" }
format.js { render action: "edit" }
end
end最后但并非最不重要的一点是,在继续下一个编码会话之前,您可能想停下来学习一点Ruby语法和ActiveRecord。
发布于 2012-10-02 17:48:38
def update
@website = Website.find(params[:id])
if params[:website][:language] == "Auto"
params[:website][:language] = full_language("request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first")
respond_to do |format|
if @website.update_attributes(params[:website])
format.html { redirect_to @website, notice: 'website was successfully updated.' }
format.js
else
format.html { render action: "edit" }
format.js { render action: "edit" }
end
end结束
https://stackoverflow.com/questions/12687918
复制相似问题