неопределенный метод 'split' NoMethodError в TextsController#create

Я пытаюсь создать простой счетчик слов, но я получаю сообщение об ошибке без метода, вот мой код, любая помощь будет оценена по достоинству.

Контроллер

lass TextsController < ApplicationController
 before_action :set_text, only: [:show, :edit, :update, :destroy]


def index
 @texts = Text.all
end

def show
end

def new
 @text = Text.new
end

def edit
end

def create
 @text = Text.new(text_params)
 @counter = text.split.size


end

Посмотреть

<%= form_for(@text) do |f| %>

<%= f.label :name %><br>
   <%= f.text_field :name %>

<div class="actions">
  <%= f.submit %>
</div>

person Rahul Narayanan    schedule 16.09.2015    source источник
comment
Я предполагаю, что Text — это класс, наследуемый от ActiveRecord? Пожалуйста, опубликуйте свой текстовый код.   -  person Ninigi    schedule 16.09.2015
comment
Еще вопросы, что такое text?   -  person BroiSatse    schedule 16.09.2015
comment
Ninigi Я еще ничего не добавлял туда class Text ‹ ActiveRecord::Base end   -  person Rahul Narayanan    schedule 16.09.2015
comment
+BroSatse Text — это имя скаффолда, я ввел в него рельсы g Scaffold Text text:string для получения дополнительной информации.   -  person Rahul Narayanan    schedule 16.09.2015
comment
Почему бы просто не изменить (at)counter= text.split.size на (at)counter = (at)text.split.size, а затем удалить действие before_action?   -  person    schedule 16.09.2015


Ответы (2)


split — это метод, который можно вызывать для строк. Вы пытаетесь вызвать его для объекта Text. Вероятно, вы намереваетесь вызвать split для члена объекта Text. Что-то вроде этого:

@counter = text.some_member_of_text.split.size
person msergeant    schedule 16.09.2015
comment
Чтобы было ясно, часть some_member_of_text должна быть полем из вашего объекта Text. С вашей точки зрения, кажется, что полем интереса в Text может быть name? Вы пробовали @counter = text.name.split.size? - person msergeant; 16.09.2015
comment
Но, как я уже говорил, у меня также есть ошибка «нет метода», поэтому моя форма вообще не работает, она говорит, что @text не помогает в этом? - person Rahul Narayanan; 16.09.2015
comment
Nvm я исправил ошибку отсутствия метода, однако теперь мой счетчик равен нулю и по-прежнему не показывает никаких результатов - person Rahul Narayanan; 16.09.2015
comment
Итак, вам, вероятно, нужно убедиться, что поле, для которого вы вызываете split, имеет значение, а перед этим вам нужно убедиться, что text_params содержит то, с чем вы хотите инициализировать объект Text. Если значение представляет собой пустую строку, разделение даст вам [] размером 0. Трудно устранить неполадки, не видя текущего состояния вашего кода. Вы заставили начать другой вопрос. - person msergeant; 16.09.2015
comment
У @text.name действительно есть значение, которое я проверил, просто счетчик кажется нулевым - person Rahul Narayanan; 16.09.2015

После того, как вы получите строку, чтобы использовать разделение, вы должны установить такой шаблон, как:

@counter = text.split(//).size

'(//)' разделит каждый символ, я думаю, это то, что вы ищете. Шаблон по умолчанию, который применяется в вашем случае, поскольку вы его не определяете, разделяется между пробелами в соответствии с документами:

http://apidock.com/ruby/String/split

person rnpd    schedule 16.09.2015