sinatra身体产生非弦值

时间:2014-04-08 09:38:02

标签: sinatra

我试图为分销商数据插入新分支以传递给Sinatra。它能够插入新记录,但会产生此错误:

"ERROR Rack::Lint::LintError: body yielded non string value [:disBranchID, 27]" 

disBranchID是表格的主键,并设置为自动递增。

HTML看起来像这样:

<form name="add_dis_branch_form" action="/add_dis_branch" method="post" id="disB" enctype="multipart/form-data">
    <div class="input-group">
        <span class="input-group-addon"> Brand </span>
        <select id="disSlcMan" class="btn btn-default full-width" name="disID" ng-model="disB.disID" required>
            <option value="">Select Brand</option>
            <% AutoMobile::DB[:distributor].select(:disID, :disComName).each do |dis| %>
                <option value="<%= dis[:disID]%>"><%= dis[:disComName] %></option> 
            <% end %>
        </select>
    </div>

    <br>
    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-map-marker"></i> Address</span>
        <input type="text" class="form-control" name="address" placeholder="Address" required ng-model="disB.address" >
    </div>

    <br>
    <div class="row">
        <div class="col-lg-6 col-md-6">
            <div class="input-group">
                <span class="input-group-addon"> City </span>
                <input type="text" class="form-control" name="city" placeholder="Petaling Jaya" required ng-model="disB.city">
            </div>
        </div>
        <div class="col-lg-6 col-md-6">
            <div class="input-group">
                <span class="input-group-addon"> State </span>
                <input type="text" class="form-control" name="state" placeholder="Selangor" required ng-model="disB.state">
            </div>
        </div>
    </div>

    <br>
    <div class="row">
        <div class="col-lg-6 col-md-6">
                <div class="input-group">
                    <span class="input-group-addon"> Zip </span>
                    <input type="text" class="form-control" name="zip" placeholder="47800" required ng-model="disB.zip" ng-pattern="/^\d{5}$/">
                </div>
                <span ng-show="add_dis_branch_form.zip.$error.pattern" class="help-inline">Invalid zip code</span>
        </div>
        <div class="col-lg-6 col-md-6">
            <div class="input-group">
                    <span class="input-group-addon" title="Map"><i class="fa fa-map-marker"></i></span>
                    <button id="btMap" class="btn btn-success form-control" onclick="return false;">Find Your Location</button>
            </div>
        </div>
    </div>

    <br>
    <div class="row">
        <div class="col-lg-6 col-md-6">
            <div class="input-group">
                <span class="input-group-addon"> Latitude </span>
                <input type="text" class="form-control" id="disLat" name="latitude"  required ng-model="disB.latitude" >
            </div>

        </div>
        <div class="col-lg-6 col-md-6">
            <div class="input-group">
                <span class="input-group-addon"> Longitude </span>
                <input type="text" class="form-control" id="disLong" name="longitude"  required ng-model="disB.longitude" >
            </div>
        </div>
    </div>
    <small>
        <b class="help-inline">
            Click Find Your Location button to locate your address.
        </b>
    </small>
    <br>
    <div class="row">
        <div class="col-lg-6 col-md-6">
            <div class="input-group">
                <span class="input-group-addon"><i class="fa fa-phone"></i>  Phone</span>
                <input type="text" class="form-control" name="phoneNo" placeholder="03-12345432" required ng-model="disB.phoneNo" ng-pattern="/^0[0-9]{1}-[0-9]{8}$/">
            </div>
        </div>
        <div class="col-lg-6 col-md-6">
            <div class="input-group">
                <span class="input-group-addon"><i class="fa fa-print"></i> Fax </span>
                <input type="text" class="form-control" name="faxNo" placeholder="03-12345432" required ng-model="disB.faxNo" ng-pattern="/^0[0-9]{1}-[0-9]{8}$/">
            </div>
        </div>
    </div>

    <br>
    <div class="pull-right">
        <input type="submit" class="btn btn-success" ng-disabled="!canSave('add_dis_branch_form')">
    </div>
</form> <!-- end form -->

Sinatra代码:

add_dis_branch = lambda do

    newBranch = AutoMobile::DisBranch.new

    newBranch.address   = params[:address]
    newBranch.city      = params[:city]
    newBranch.state     = params[:state]
    newBranch.zip       = params[:zip]
    newBranch.phone     = params[:phoneNo]
    newBranch.fax       = params[:faxNo]
    newBranch.latitude  = params[:latitude]
    newBranch.longitude = params[:longitude]
    newBranch.disID     = params[:disID]

    newBranch.save
end

1 个答案:

答案 0 :(得分:0)

以下是编写路线的一种方法:

post "/automobile/branch" do
  newBranch = AutoMobile::DisBranch.new

  newBranch.address   = params[:address]
  newBranch.city      = params[:city]
  newBranch.state     = params[:state]
  newBranch.zip       = params[:zip]
  newBranch.phone     = params[:phoneNo]
  newBranch.fax       = params[:faxNo]
  newBranch.latitude  = params[:latitude]
  newBranch.longitude = params[:longitude]
  newBranch.disID     = params[:disID]

  newBranch.save

  halt 201
end

但我建议您仔细阅读Sinatra on creating routesSequel on creating model instances的文档。