我目前正在制作一个租赁系统,我需要在这个系统中创建租借时间以及何时使用RoR返回租用物品。我已经将代码保存在数据库中,然后使用错误value required 2, got nil
回滚。
以下是我的代码:
AcquiretimesController < ApplicationController
def create
@item = Item.find(params[:item_id])
@acquiretime = @item.acquiretimes.create(time_params)
if @acquiretime.valid?
flash[:success] = "You have successfully rented the item"
redirect_to root_path
else
flash[:alert] = "Woops! Looks like there has been error. Please enter valid data."
redirect_to root_path
end
end
private
def time_params
params.require(:acquiretime).permit(:required_time, :return_time)
end
我认为,我使用了以下内容:
<%= simple_form_for [current_item, @acquiretime] do |f| %>
<div class = "add_item_form">
<%= f.input :required_time, as: :date, html5: true %>
<%= f.input :return_time, as: :date, html5: true %>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<%= f.submit 'Add Item', class: 'btn btn-primary' %>
</div>
<% end %>
我的Acquiretime模型是:
class Acquiretime < ApplicationRecord
belongs_to :item
belongs_to :users
validates :required_time, :return_time, presence: true
end
对于物品,
class Item < ApplicationRecord
belongs_to :user
has_many :acquiretimes
end
和用户,
class User < ApplicationRecord
has_many :items
has_one :acquiretime
end
以下是我在控制台中的错误消息:
开始POST&#34; / items / 3 / acquiretimes&#34;对于127.0.0.1在2018-01-07 18:28:04 +0545 由AcquiretimesController处理#create as HTML 参数:{&#34; utf8&#34; =&gt;&#34;✓&#34;,&#34; authenticity_token&#34; =&gt;&#34; Zo9qj1VsLlMwgwSozATh2C // tMQHbFOaMvZ1IddeVdQxG7enNDmPWe64RO / 1CmmpBlevmSfJ7 / w9Fzey5NxP8A ==& #34;,&#34; acquiretime&#34; =&gt; {&#34; required_time&#34; =&gt;&#34; 2018-01-07&#34;,&#34; return_time&#34; =&gt; ;&#34; 2018-01-22&#34;},&#34;提交&#34; =&gt;&#34;添加项目&#34;,&#34; item_id&#34; =&gt;&#34 ; 3&#34;} 项目负载(0.3ms)SELECT&#34; items&#34;。* FROM&#34; items&#34;在哪里&#34;项目&#34;。&#34; id&#34; = $ 1 LIMIT $ 2 [[&#34; id&#34;,3],[&#34; LIMIT&#34;,1]] (0.2ms)BEGIN (0.2ms)COMMIT (0.1ms)BEGIN (0.1ms)ROLLBACK 在117ms内完成500内部服务器错误(ActiveRecord:1.0ms)
ArgumentError(参数数量错误(给定0,预期2)): app / controllers / acquiretimes_controller.rb:18:在`create&#39; 在救援中渲染/home/skj/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.6/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb /布局 渲染/home/skj/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.6/lib/action_dispatch/middleware/templates/rescues/_source.html.erb 已呈现/home/skj/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.6/lib/action_dispatch/middleware/templates/rescues/_source.html.erb(5.7女士) 渲染/home/skj/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.6/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb 呈现/home/skj/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.6/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb(2.7女士) 渲染/home/skj/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb 呈现/home/skj/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb(2.7女士) 在救援中呈现/home/skj/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.6/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb / layout(107.9ms)
答案 0 :(得分:0)
在上面的回复部分的@TheMouseMan的帮助下,问题已经解决。我遇到的问题是Acquiretime.rb中的拼写错误,我写了belongs_to :users
但应该是belongs_to :user
。
接下来是使用hidden_field从表单传递user.id:
<%= f.hiddent_field :user_id, value: current_user.id%>