2017-01-03 72 views
2

我看了几个类似于这个问题的不同答案,但他们都获得传入params散列的id,它只是回来作为零值。我似乎不能让id被列入白名单,我无法弄清楚为什么。没有路由匹配显示动作 - 缺少必需的键:[:id]

这是我的创建和显示操作,还包括参数。我明确列出了白名单,尽管我不知道是否有必要。

def show 
    @board = Board.find(params[:id]) 
    end 

    def create 
    @board = Board.new(board_params) 

    if @board.save 
     # flash[:notice] = 'You successfully created your post!' 
     redirect_to board_path 
    else 
     render 'new' 
     # flash[:danger] = 'One or more errors occurred when processing your post' 
    end 
    end 

    private 

    def board_params 
    # params.require(:board).permit! 
    params.require(:board).permit(:id, :project_name, :project_description, :postition_title, :project_url, :project_headquarters, :application_process) 
    end 

我的路由的输出显示动作

board GET /boards/:id(.:format) boards#show

而且params哈希表的上板#输出创造

Parameters: {"utf8"=>"✓", "authenticity_token"=>"k+KKRhBk4Dnba1vxtFCanI2grfhNXFSgJpfEBLnhPdablfOsXRi1wBehPpM1qgx1pySrqxVHTeiwkneluXwRIQ==", "board"=>{"project_name"=>"sdf", "postition_title"=>"sdf", "project_headquarters"=>"sdf", "project_url"=>"fsd", "project_description"=>"dfs", "application_process"=>"dfs"}, "commit"=>"Create Board"}

有人能看到什么,我需要更改为了让传入的ID正确?

+0

你不需要到白名单:ID 。当您链接到电路板显示页面时是否存在问题,或者您是否也无法通过手动输入网址去/ board /#? – gwalshington

+0

也 - “重定向到@ board”将带你到显示页面。 – gwalshington

+0

即时无法进行手动操作。此外您的解决方案工作,谢谢,但你知道为什么重定向到board_path不起作用吗? – adamscott

回答

1

试试这个。

采取:id out of params。

def show 
end 

def create 
    @board = Board.new(board_params) 

    respond_to do |format| 
     if @board.save 
     format.html { redirect_to @board, notice: 'Board was successfully created.' } 
     format.json { render :show, status: :created, location: @board } 
     else 
     format.html { render :new } 
     format.json { render json: @board.errors, status: :unprocessable_entity } 
     end 
    end 
end 
0
create行动

...

变化..

redirect_to board_path 

到...

redirect_to board_path(@board) 
###OR 
### this calls the show action 
redirect_to @board 
相关问题