RevisersController中的NoMethodError#new" undefined方法`build'为零:NilClass"

时间:2016-05-15 18:50:59

标签: html ruby-on-rails ruby methods controller

我希望用户有能力成为一名修改者!因此,如果他们填写表格成为一个,他们就可以获得作为审校的特征!我有一个has_one reviseruser与routes.rb中的resource reviser相关联。 我收到这个错误!与我的审校有关的事情可能会从我在线阅读的内容中返回null,但我不知道如何不在我的审校控制器中将def new设为null。

审校控制员:

class RevisersController < ApplicationController

before_action :set_reviser, only: [:show, :edit, :update]
before_action :authenticate_user!, except: [:show]

  def index
    @reviser = current_user.reviser
  end

  def show

  end

  def new
    @reviser = current_user.reviser.build
    @user = User.find(params[:user_id])
  end

  def create
    @reviser = current_user.reviser.build(reviser_params)

    if @reviser.save
      redirect_to @reviser,notice: "saved...."
    else 
      render :new
    end
  end

  def edit
    set_reviser
  end

  def update
    set_reviser
    if @reviser.update(reviser_params)
      redirect_to @reviser,notice: "updated.."
    else
      render :edit
    end
  end

private 
def set_reviser
  @reviser = Reviser.find(params[:id])
end

  def reviser_params
    params.require(:reviser).permit(:description, :average_start, :average_end, :max_pages, :price_per, :active)
end
end

new.html:

&#13;
&#13;
<div class="panel panel-default">
	<div class="panel-heading">
	Create your reviser profile information
	</div>
	<div class="panel-body">
		<div class="container">

		<%= form_for @reviser do |f| %>

		<div class="row">
			<div class="div.col-md-4 select">
			<div class="form-group">
				<label>dsd</label>
				<%= f.input :description, label: false, class: 'controls',:input_html =>{:id => 'description'} %>
			</div>
				
			</div> 
		</div>
             <%= f.submit "Become Adviser", class: "btn btn-large btn-primary" %>
		<% end %>
		</div>
	</div>
</div>
&#13;
&#13;
&#13;

错误报告:

`开始GET&#34; / users / 16 / reviser / new&#34;在2016-05-16 03:48:18 +0900获得127.0.0.1 由RevisersController处理#new为HTML   参数:{&#34; user_id&#34; =&gt;&#34; 16&#34;}   用户负载(0.1ms)SELECT&#34;用户&#34;。* FROM&#34;用户&#34;用户&#34;。&#34; id&#34; =? ORDER BY&#34;用户&#34;。&#34; id&#34; ASC LIMIT 1 [[&#34; id&#34;,16]]   Reviser Load(0.1ms)SELECT&#34; revisers&#34;。* FROM&#34; revisers&#34;在哪里&#34;审校&#34;。&#34; user_id&#34; =?限制1 [[&#34; user_id&#34;,16]] 在2ms内完成500内部服务器错误(ActiveRecord:0.2ms)

NoMethodError(未定义的方法build' for nil:NilClass): app/controllers/revisers_controller.rb:15:in new&#39;

`

1 个答案:

答案 0 :(得分:1)

构建语法是:current_user.build_reviser(params [:reviser])