创建或保存数据后重定向到索引而不是显示

时间:2016-07-05 13:13:36

标签: html ruby-on-rails json view

我想在输入(创建/新建/更新)数据后直接转到索引视图。输入数据后立即显示节目视图。我试图改变渲染:show into render:index,但这不起作用。

这是我的控制者:

class ElectricityGenerationsController < ApplicationController
  before_action :logged_in_user
  before_action :set_electricity_generation, only: [:show, :edit, :update, :destroy]`

  # GET /electricity_generations
  # GET /electricity_generations.json
  def index
    @scenario_selection = Selection.find_by_resource("scenario").name
    @selected_scenarios = Selection.find_by_resource("scenario").scenario_id
    @electricity_generations = ElectricityGeneration.where(scenario_id: @selected_scenarios)
    respond_to do |format|
      format.html #index.html.erb
      format.json {render json: @electricity_generations}
    end
  end

  # GET /electricity_generations/1
  # GET /electricity_generations/1.json
  def show
    @scenario_selections = Selection.find_by_resource("scenario").name
    @electricity_generation = ElectricityGeneration.find(params[:id])
    respond_to do |format|
      format.html #show.html.erb
      format.json {render json: @electricity_generations}
    end
  end

  # GET /electricity_generations/new
  def new
    @scenario_selections = Selection.find_by_resource("scenario").name
    @electricity_generation = ElectricityGeneration.new
    respond_to do |format|
      format.html #new.html.erb
      format.json {render json: @electricity_generations}
    end
  end

  # GET /electricity_generations/1/edit
  def edit
    @scenario_selections = Selection.find_by_resource("scenario").name
    @electricity_generation = ElectricityGeneration.find(params[:id])
  end

  # POST /electricity_generations
  # POST /electricity_generations.json
  def create
    @selected_scenarios = Selection.find_by_resource("scenario").scenario_id
    @electricity_generation = ElectricityGeneration.new(electricity_generation_params)
    @electricity_generation.id = ElectricityGeneration.last.id + 1
    @electricity_generation.scenario_id = Selection.find_by_resource("scenario").scenario_id
    @scenario_selections = Selection.find_by_resource("scenario").name
    @electricity_generation.user_id = current_user.id
    respond_to do |format|
      if @electricity_generation.save
        format.html { redirect_to @electricity_generation, notice: 'Electricity Generation Information was successfully created.' }
        format.json { render :show, status: :created, location: @electricity_generation }
      else
        format.html { render :new }
        format.json { render json: @electricity_generation.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /electricity_generations/1
  # PATCH/PUT /electricity_generations/1.json
  def update
    @scenario_selections = Selection.find_by_resource("scenario").name
    @electricity_generation.user_id = current_user.id
    respond_to do |format|
      if @electricity_generation.update(electricity_generation_params)
        format.html { redirect_to @electricity_generation, notice: 'Electricity Generation was successfully updated.' }
        format.json { render :show, status: :ok, location: @electricity_generation }
      else
        format.html { render :edit }
        format.json { render json: @electricity_generation.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /electricity_generations/1
  # DELETE /electricity_generations/1.json
  def destroy
    @scenario_selections = Selection.find_by_resource("scenario").name
    @electricity_generation.destroy
    respond_to do |format|
      format.html { redirect_to electricity_generations_url, notice: 'Electricity generation was successfully destroyed.' }
      format.json { head :no_content }
    end
  end


  private
    # Use callbacks to share common setup or constraints between actions.
    def set_electricity_generation
      @electricity_generation = ElectricityGeneration.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def electricity_generation_params
      params.require(:electricity_generation).permit(:user_id, :annual_solar_irradiation, :asi_max, :asi_min, :scenario_id)
    end
end

2 个答案:

答案 0 :(得分:3)

仅重定向到根路径,如此;

    format.html { redirect_to root_path, notice: 'My Notice.' }

希望这有帮助。

答案 1 :(得分:0)

只需使用redirect_to %url_helper_to_your_index%代替render :show