Поиск:

Ответ в темуСоздание новой темы Создание опроса
> form_for передача значения в контроллер 
:(
    Опции темы
Carlos0N
Дата 25.8.2012, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 9.10.2007

Репутация: нет
Всего: 1



Привет.
Подскажите, как решить следующую проблему.
Есть контроллер с методом main в котором я объявляю переменную @var=""
Далее я хочу присвоить ей значение из вьюхи. Как это сделать?
С объектом модели к примеру всё понятно и работает, но просто к переменной присвоить значения у меня не получается.
И еще, как установить, какой метод будет отрабатывать в контроллере при нажатии кнопки? 

К примеру у меня есть модель User и контроллер

Код

class UsersController < ApplicationController
  def new
    @user = User.new
  end
  
  def create
    @user = User.new(params[:user])
    if @user.save
      redirect_to #страница
    else
      render 'new'
    end
  end
end


и вьюха

Код

<h1>User</h1>
<%= form_for(@user) do |f| %>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="actions">
    <%= f.submit "Save" %>
  </div>
<% end %>


так вот тут я не могу понять, почему при нажатии на кнопку Save отрабатывает именно метод create? Где собственно указывается, что должен сработать именно create и как указать какой то другой метод?

Я совсем недавно начал разбираться с ror, так что сильно не ругайте.
PM MAIL ICQ   Вверх
Rikkit
Дата 25.8.2012, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 19.7.2011

Репутация: нет
Всего: нет



Код

    <%= f.submit "Save", method: :delete %>

PM MAIL   Вверх
Carlos0N
Дата 25.8.2012, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 9.10.2007

Репутация: нет
Всего: 1



Честно говоря, это проблемму не решило, да и вообще у меня не заработало. Может я что не так делаю конечно.
Я так и не понимаю, как передавать значения из представления в контроллер..
Я так понимаю, когда мы работаем с моделями, то у нас есть только действия CRUD, верно?
В данном случае мне просто надо передать текст из формы в представлении, в контроллер по нажатию кнопки. При этом я должен остаться на этой странице и не обновлять её? Как это сделать силами ror?

Наверное тут сумбур сплошной, но обратная связь контроллера и формы мне плохо понятна.
PM MAIL ICQ   Вверх
Rikkit
Дата 27.8.2012, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 19.7.2011

Репутация: нет
Всего: нет



Насчет метода
Цитата
так вот тут я не могу понять, почему при нажатии на кнопку Save отрабатывает именно метод create?
В форму вы передаете объект, который еще не лежит в базе данных, соответственно form_for и решает, что нужно делать :create.

Не вижу вообще смысла париться с выбранным методом. Разве что при создании ссылки на удаление 
Код

<%= link_to 'Destroy', @user, method: :delete %>


Теперь насчет переменной @var
  • Через url
    Вводите url (в виде можете сделать это как ссылку) в браузер, вида /controller/action?var=foobar
    В экшне можете обращаться к данным так - params[:var] , а можете ввести @var = params[:var]
  • Через вид
    Создаете форму
    Код

    <form action = '/controller/action' method=post>
    <input name='var' /><input type=submit />
    </form>

    далее в экшене тот же params[:var]

PM MAIL   Вверх
Carlos0N
Дата 31.8.2012, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 9.10.2007

Репутация: нет
Всего: 1



Rikkit, спасибо!
Когда задавал вопрос, ещё не до конца понимал принцыпы работы rails. Сейчас всё встаёт на свои места.
Если у кого-то возникнут такие же сложности с пониманием основ, то рекомендую курсы Rails For Zombies от http://www.codeschool.com/
Первый курс там бесплатный, второй нет, но в интеренете не проблема найти pdf со слайдами. Мне они достаточно сильно помогли. Ну и railscast конечно.

PS не считайте это рекламой, просто реально для начального уровня хороший материал.

Это сообщение отредактировал(а) Carlos0N - 31.8.2012, 12:21
PM MAIL ICQ   Вверх
source777
Дата 31.8.2012, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Почитайте ещё Rails Tutorial или его слегка устаревший перевод на русский.


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.1417 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.