繁体   English   中英

无法在轨道上将符号转换为字符串红宝石

[英]can't convert symbol into string ruby on rails

我陷入了一个很奇怪的问题。 我有2个模型UserSupplier 用户可以添加许多供应商,因此这是我的模型的样子。 这是我的用户模型

class User < ActiveRecord::Base
.
.
.
     has_many :suppliers, dependent: :destroy

     def Supplier_feed
         Supplier.where("user_id = ?", id)
     end
end

我的供应商模型就像

class Supplier < ActiveRecord::Base
    set_primary_key :id 

  belongs_to :user
  default_scope -> { order('created_at DESC') }
  validates :supplier, presence: true, length: { maximum: 140 }
  validates :user_id, presence: true
end

我的控制器看起来像

class SuppliersController < ApplicationController
   before_filter :signed_in_user, only: [:index, :edit, :update, :destroy]


  def index
    @user=current_user
    @supplier = current_user.suppliers.paginate(page: params[:page])
  end

  def new
    @supplier=Supplier.new
  end


  def create
    @supplier = current_user.suppliers.build(supplier_params)
    if @supplier.save
      flash[:success] = "Supplier created!"
      redirect_to root_url
    else
      @supplier_feed_items = []
      render 'users/home'
    end
  end

  def destroy
  end

  private

      def supplier_params
      params.require(:suppliers).permit(:supplier)
    end
end

当我尝试添加一些供应商时出现错误

 TypeError in SuppliersController#create

can't convert Symbol into String

这是我的表格的样子。

<%= form_for :suppliers, :url => {:action => "create"} do |f| %>

  <div class="field">
    <%= f.text_area :supplier, placeholder: "Add new Supplier..." %>
  </div>
  <%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>

由于我是RoR的新手,所以无法弄清楚我做错了什么。 请指导我正确的方向。 提前致谢

编辑我的应用程序跟踪就像

app/controllers/suppliers_controller.rb:32:in `supplier_params'
app/controllers/suppliers_controller.rb:16:in `create'

This error occurred while loading the following files:
   supplier

我的请求参数是

{"utf8"=>"✓",
 "authenticity_token"=>"1op5Kkh6EXO+wsR9TmAY1SW3ZIUNYcrodbJ9lfpJjck=",
 "suppliers"=>{"supplier"=>"abc"},
 "commit"=>"Post"}

这是我的添加供应商表格。

<%= form_for :suppliers, :url => {:action => "create"} do |f| %> 
  <div class="field">
    <%= f.text_area :supplier, placeholder: "Add new Supplier..." %>
  </div>
  <%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>

我正在使用部分。 所以这是我的看法供应商

<div class="span8">
    <% if @user.suppliers.any? %>
      <h3>Suppliers (<%= @user.suppliers.count %>)</h3>
      <ol class="supplierss">
        <%= render @supplier %>
      </ol>
      <%= will_paginate @supplier %>
    <% end %>
  </div>

这是我的_Suppliers.html.erb

<li>
  <span class="content"><%= supplier.supplier %></span>
  </span>
</li>

这是打字错误

你用过

def new
   @supplier=Supplier.new
end

鉴于您已经使用

<%= form_for :suppliers, :url => {:action => "create"} do |f| %>

在视图:suppliers必须是supplier删除ssuppliers

请用

def new
  @supplier=Supplier.new
end

<%= form_for :supplier, :url => {:action => "create"} do |f| %>

  <div class="field">
    <%= f.text_area :supplier, placeholder: "Add new Supplier..." %>
  </div>
  <%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>

您创建这样的表单

<%= form_for @supplier do |f| %>

并在控制器中

def创建

@supplier = current_user.suppliers.build(params[:supplier])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM