首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在更新操作中更改对象属性?

如何在更新操作中更改对象属性?
EN

Stack Overflow用户
提问于 2012-10-02 17:38:57
回答 2查看 696关注 0票数 0

我需要使用方法,它只在控制器中工作,但我不能实现改变属性。

下面是我的更新操作:

代码语言:javascript
复制
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

结束

我哪里做错了?

EN

回答 2

Stack Overflow用户

发布于 2012-10-02 17:46:44

代码语言:javascript
复制
@website.update_attributes(params[:website])

已将其保存到数据库。

代码语言:javascript
复制
@website.[:website][:language] =  full_language("request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first")

没有任何意义。

代码语言:javascript
复制
@website.language = full_language(request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first)

确实如此。还要注意request.env前面的引号被删除了。注意,您需要再次保存更改,因此在更新属性之前移动所有内容并使用一次保存调用是有意义的。

代码语言:javascript
复制
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。

票数 1
EN

Stack Overflow用户

发布于 2012-10-02 17:48:38

代码语言:javascript
复制
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

结束

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12687918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档