获取current_user的金额,可通过 js.erb 部分访问
Fetching a sum for the current_user, accessible through a js.erb partial
我有一个模型Expense.rb,其中用户有很多。可以通过ajax表单添加新的费用,因此我有适当的文件设置(create.js.erb,destroy.js.erb..等)
目前,当通过远程表单提交新费用时,也会在 create.js.erb 中更新金额总和,在我的费用模型中如下所示:
def total_value
Expense.sum(:amount)
end
create.js.erb:
$('#total').html('$<%= number_with_delimiter(@expense.total_value) %>');
问题是这汇总了数据库中的所有费用,而我只需要查找current_user(我知道无法从模型中访问)。
在我的控制器内部,在索引操作上,我是这样做的:
@expenses = current_user.expenses
@total_value = @expenses.sum(:amount)
这意味着我可以通过执行以下操作来获取索引视图中的current_user: <%= number_with_delimiter(@total_value) %>
但至于创建操作:
def create
@expense = Expense.new(secure_params)
@expense.user = User.find(current_user.id)
@expense.save
respond_to do |format|
format.html { redirect_to index_expense_path }
format.js
end
end
我不确定如何将current_user传递给模型中的total_value,以便仅对创建 js.erb 中使用的 current_user id 求和total_value。
Expense.sum(:amount) 会取出所有费用记录。
改变
def total_value
Expense.sum(:amount)
end
自:
def self.total_value
sum(:amount)
end
会叫自己,所以这样做
current_user.expenses.total_value
应该工作,如果你这样做Expense.total_value
仍然会继续工作。
问题是这汇总了数据库中的所有费用,而我需要 只是找到current_user(我知道无法访问 模型)。
也许您可以使用scope
并将user id
传递给它:
#app/controllers/expenses_controller.rb
def total_votes
Expense.user(current_user).sum(:amount)
end
#app/models/expense.rb
Class Expense < ActiveRecord::Base
scope :user, ->(user) { where(user_id: user.id) }
end
用户模型中不需要total_expenses方法吗:
Class User
has_many :expenses
def total_expenses
expenses.sum(:amount)
end
end
然后你可以打电话
current_user.total_expenses
- Rails 3.2 js.erb文件转义js
- Js.erb VS按钮标记-不'不起作用.为什么?
- js.erb文件未呈现其内容
- 如何使用 Ruby 在 Javascript (js.erb) 中设置 url
- Rails:如何在jQuery(.js.erb)中调用“create”操作
- js erb 内的 Rails 会话为空
- 使用 HAML 的复杂 ERB 替换在 JS 中失败
- 在Rails中使用remote:true在Chrome中有效,但在Safari中无效——从js.erb文件调用succe
- js.erb文件中提供给RegExp构造函数的标志无效
- 如何在我的create.js.erb中重置/清除表单
- Rails js.erb文件未执行
- js.erb格式的控制器测试
- 使用控制器在conditional.js.erb文件中设置变量
- 我的 update.js.erb 文件仅在第一次单击按钮时运行,而不在后续单击时运行(单击时更改按钮的类和值)
- 在 Ajax 中创建 RoR 链接 在 .js.erb 文件中调用
- Rails 3 嵌入式小部件:show.js.erb 似乎不起作用
- js.erb 呈现到布局中,而不是执行
- Rails 4 是否允许在.JS视图中使用红宝石代码,在 rails 3 中,文件名中需要包含 .erb.js
- Ruby on Rails 路由前缀,而不是在 .erb.js 文件中进行预处理
- 如何响应AJAX调用没有erb.js /为什么使用erb.js