我希望用户有能力成为一名修改者!因此,如果他们填写表格成为一个,他们就可以获得作为审校的特征!我有一个has_one reviser
,user
与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:
<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;
错误报告:
`开始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;
`
答案 0 :(得分:1)
构建语法是:current_user.build_reviser(params [:reviser])