2016-06-16 20 views
0

我正在开发一个将预算添加到团队的简单工具。它的作用类似于待办事项列表。需要刷新才能显示创建的项目

删除功能无需重新加载,但创建功能需要刷新(数据被添加到数据库罚款)。

这是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 
+0

你的文件名是'create.erb.js'而不是'create.js.erb'吗? – Pavan

+0

谢谢帕文,那是错误的问题,在图书馆它的create.js.erb –

回答

0

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

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

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

+0

谢谢理查德,优秀的 –

相关问题