【发布时间】:2016-05-15 18:50:59
【问题描述】:
我希望用户有能力成为修订者!因此,如果他们填写表格成为修订者,他们可以获得成为修订者的功能!我有一个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>
错误报告:
`在 2016-05-16 03:48:18 +0900 开始为 127.0.0.1 获取“/users/16/reviser/new” 由 RevisersController#new 处理为 HTML 参数:{"user_id"=>"16"} 用户负载 (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1 [["id", 16]] 修订者加载(0.1 毫秒) SELECT "revisers".* FROM "revisers" WHERE "revisers"."user_id" = ?限制 1 [["user_id", 16]] 在 2 毫秒内完成 500 内部服务器错误(ActiveRecord:0.2 毫秒)
NoMethodError(未定义方法build' for nil:NilClass):
app/controllers/revisers_controller.rb:15:innew'
`
【问题讨论】:
标签: html ruby-on-rails ruby methods controller