2013-05-03 1 views
0

Чтобы узнать Rails, я пишу простое приложение для гостевой книги, которое не использует базу данных. Во всяком случае, это то, что мой взгляд выглядит следующим образом:Строка будет работать, но не символы в Rails

просмотров/guest_book_pages/home.html.erb

<h1>Guest Book</h1> 

<%= @userinput %> 

<%= form_for(:guestbook) do |f| %> 
    <%= f.label :input %> 
    <%= f.text_field :input %> 

    <%= f.submit "Sign" %> 
<% end %> 

И контроллер выглядит следующим образом:

Контроллеры/guest_book_pages_controller.rb

class StaticPagesController < ApplicationController 
    def home 
    @userinput = params[:guestbook]["input"] 
    end 
end 

Всякий раз, когда я меняю «ввод» на символ: ввод, приложение прерывается и дает мне предупреждение, в котором говорится: undefined method `[] 'for nil: NilClass

В чем причина этого? Почему я не могу использовать символ?

обновление: теперь он даже не будет работать со строкой. Что происходит?

обновление № 2: оно работает как с символами, так и с строкой. Единственная проблема заключается в том, что он не будет загружаться в первый раз. Если я смогу загрузить страницу, то она будет работать. Как я могу загрузить страницу?

ответ

0

Действие, которое нужно обрабатывать, и визуализировать вид. Когда вы будете дома, будет вызвано домашнее действие, и теперь парам не будет отправлен. для вашего кода, действие дома должно быть пустым, это просто для рендеринга home_page. ваш код должен перейти к некоторому действию, как sign_in, whitch обрабатывать сообщение формы, и вы можете получить параметры.

0

При первой загрузке страницы параметры var не установлены. Только тогда, когда вы отправить форму обратно, что есть PARAMS

Попробуйте

@userinput = params[:guestbook]["input"] || '' 

, который будет инициализировать @userinput в пустую строку, если Титулы не найден

редактировать:

Это будет проверять, есть ли у параметров сначала гостевая книга ключа, затем либо установит экземпляр var userinput в пустую строку, либо значение [guestbook] [input], если она exsists.

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

if params.has_key?(:guestbook) 
    @userinput = params[:guestbook]["input"] || '' 
else 
    @userinput = '' 
end 
+0

Я пробовал, но проблема не устранена. Я думаю, что сам поступок: params [: guestbook] ["input"] заставляет его сломаться. Интересно, есть ли способ проверить, не заданы ли параметры без проверки самих параметров? – learningrails123

+0

Вы пробовали 'if params.has_key? (: Guestbook)' – fullybaked

+0

На самом деле, мне нужно проверить, имеет ли значение: input значение, и когда я это делаю, он снова ломается. – learningrails123