我需要将两个实例变量传递给ajax请求用来更新用户显示的javascript文件。这就是我需要做的事情:
respond_to do |format|
if @post.save
format.js { @post @user_vote } # <-- right here
else
format.html { redirect_to :back, :alert => 'There was an error in removing the vote' }
end
end
这是怎么做到的?
答案 0 :(得分:7)
如果使用js.erb文件,则无需传递实例变量。您可以直接放置rails标记并在js.erb文件中访问这些变量
例如:
在你的控制器中放入
format.js #instead of format.js { @post @user_vote }
并在js.erb文件中,您可以将实例变量作为
进行访问$('#ele').html("<%= @post.name %>");
答案 1 :(得分:2)
ActionController操作中的实例变量可在您的视图中自动获得。例如。你的控制器:
# posts_controller.rb
def update
# Your implementation here
@post = ...
@user_vote = ...
respond_to do |format|
if @post.save
format.js
format.html { redirect_to post_path(@post) }
else
format.js { ... }
format.html { redirect_to :back, ... }
end
end
end
然后在你的update.js.erb:
# update.js.erb
console.log('Post: <%= @post.inspect %>');
console.log('User vote: <%= @user_vote %>');
# Your JS implementation here
(另外我注意到你在respond_to块中的逻辑可能会导致问题。你应该为@post.save
的成功和失败条件渲染js和html格式。)