如何在RoR

时间:2018-01-07 12:08:46

标签: ruby-on-rails

我目前正在制作一个租赁系统,我需要在这个系统中创建租借时间以及何时使用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)

1 个答案:

答案 0 :(得分:0)

在上面的回复部分的@TheMouseMan的帮助下,问题已经解决。我遇到的问题是Acquiretime.rb中的拼写错误,我写了belongs_to :users但应该是belongs_to :user。 接下来是使用hidden_​​field从表单传递user.id: <%= f.hiddent_field :user_id, value: current_user.id%>