Rails:best_in_place集合问题

时间:2013-01-24 10:15:17

标签: ruby-on-rails namespaces best-in-place

我的应用程序在两个不同的数据库上运行,我使用应用程序逻辑来处理它们。

我在外部数据库上有用户模型,我只在 default_role类上记录 id

因此,在索引模板中,我从远程获取帐户,并且对于每个帐户我必须查询我的表以打印一些不可变信息,我想给出更改的可能性我的表格中的角色

索引信息=远程表信息(名称姓氏ecc)+我的表信息(角色)

使用best_in_place编辑用户的role_id字段。

问题是我的索引周期@operators来自外部购买我需要改变我身边的角色!

- @operators.each do |ope|   #cycle users
      %tr
        %td
          - user = User.find_by_bay_id(ope.account_id)
          - df = DefaultRole.find_by_operator_id(user.id)
          = best_in_place [:admin, df], :role_id, :type => :select, :collection => [[1, 'admin'], [2, 'coordinator'], [3, 'operator'], [4, 'base']]

和我在控制器中的更新:

respond_to :html, :json

def index
  @operators = some logic from model where I get all the users
end

def update
  @df = DefaultRole.find(params[:id])
  @df.update_attributes(params[:default_role])
  respond_with [:admin, @df]
end

但它甚至没有在控制器中调用我的更新方法。 它通常会检查集合标记,允许我更改它,但它不允许我提交。

我做错了什么?

修改

我的浏览器没有收到任何请求。

2 个答案:

答案 0 :(得分:0)

Best_in_place gem使用JSON调用来更新内容。在这种情况下,您的控制器中应该有respond_to json语句,如下所示:

def update
 @df = DefaultRole.find(params[:id])
respond_to do |format|
  if @df.update_attributes(params[:default_role])
    format.html { redirect_to root_path, notice: 'Role was successfully updated.' }
    format.json { head :no_content }
  else
    format.html { render action: "edit" }
    format.json { render json: @df.errors, status: :unprocessable_entity }
  end 
end

我发现在您的视图中包含变量规范很奇怪,它们属于控制器(- user = User.find_by_bay_id(ope.account_id) - df = DefaultRole.find_by_operator_id(user.id)

答案 1 :(得分:0)

我终于找到了错误。

https://github.com/bernat/best_in_place/issues/217

这个版本的best_in_place是一个Jquery问题。运行:

bundle update

并重新启动服务器解决问题,谢谢大家