需要刷新才能显示创建的项目

时间:2016-06-16 11:53:31

标签: javascript jquery ruby-on-rails ruby ajax

我正在开发一个简单的工具,可以为团队增加预算。它的工作方式类似于待办事项列表。

删除功能无需重新加载即可,但创建功能需要刷新(数据可以很好地添加到数据库中)。

这是create.js.erb

$('.budget_items').append("<%= j render partial: 'budget', locals: {budget: @budget} %>");

这是部分:_budget.html.erb

<li id="<%= budget.id %>">
<%= budget.budget_item %>
<%= budget.quantity %>
<%= budget.cost_per_item %>
Total cost: <%= budget.quantity * budget.cost_per_item %>
<%= link_to "delete budget item", project_team_budget_path(@project, @team,    
budget), method: 'delete', remote: true %>
</li>

<h1>My Estimated Budget</h1>
<h3>Total Budget: </h3>

<%= simple_form_for [@project, @team, @budget], remote: true do |f| %>

  <div class="form-group">
    <%= f.input :budget_item %>
  </div>

  <div class="form-group">
    <%= f.input :quantity %>
  </div>

  <div class="form-group">
    <%= f.input :cost_per_item %>
  </div>

  <div class="form-group">
  <%= f.submit "Add budget item" %>
  </div>
<% end %>

<ul class="budget_items">
  <%= render @budgets %>
</ul>

这是预算控制器:

class BudgetsController < ApplicationController

  def index
    @budgets = Budget.all
  end

  def create
    @team = Team.find(params[:team_id])
    @budget = @team.budgets.create(budget_params)
    respond_to do |format|
      format.html { redirect_to project_team_budgets_path }
      format.js { }
    end
  end

  def destroy
    @team = Team.find(params[:team_id])
    @budget = @team.budgets.find(params[:id])
    @budget.destroy
    respond_to do |format|
      format.html { redirect_to project_team_budgets_path }
      format.js { }
    end
  end

  private

  def budget_params
    params.require(:budget).permit(:title, :budget_item, :quantity, :cost_per_item)
  end
end

2 个答案:

答案 0 :(得分:0)

我们最终在budgets_controller中添加了set_project方法。

def set_project
  @project = Project.find(params[:project_id])
end

为它设置before_action。我认为我们遇到的问题是它正在寻找一个project_id但我们在创建一个新的预算项目时没有将它传递给项目。

答案 1 :(得分:0)

如果在.html.erb中包含遥控器,也许会有所帮助。也许会有点困难,但长期回报会更好。

这里有一个基本教程http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html

最好!