Обновляет атрибуты из пустой формы - PullRequest
0 голосов
/ 01 февраля 2012

Я хочу, чтобы пользователи нажимали кнопку, чтобы опубликовать событие на моей странице публикации.

Вид / События / publish.html.erb

<%= form_for @event do |p| %>       
   <%= p.submit "Yes publish my event now" %> | 
   <%= link_to "Cancel", events_path %>
<% end %>

Пользователи могут попасть на страницу публикации с моей страницы индекса

Вид / События / index.html.erb

<% for event in @events %>
   <%= link_to "Publish", publish_path(:id => event) %>
<% end %>

Publish_path определен в маршрутах к контроллеру событий

routes.rb

match 'publish' => 'events#publish', :as => :publish

Вот мой контроллер событий

events_controller.rb

def publish
  @event = Event.find(params[:id])
end

Когда я добавил код (см. Ниже) для обновления модели событий в своем действии публикации, контроллер обновит атрибуты, но когда пользователь нажмет на ссылку «Опубликовать» в моем индексе.

С этим кодом пользователи не могут видеть мою страницу публикации, когда нажимают на ссылку публикации в индексе. Вместо этого они будут отправлены обратно на страницу индекса, но все атрибуты обновлены.

def publish
   @event = Event.find(params[:id])
   if @event.update_attributes(:published_at => DateTime.now, :publish => true)
     flash[:success] = "Your event has been publish"
     redirect_to events_path
   end
end 

Вопрос в том, как получить пользователя со страницы индекса -> страница публикации -> нажать кнопку отправить -> обновить атрибуты -> вернуться на страницу индекса с помощью флэш-сообщения?

1 Ответ

1 голос
/ 01 февраля 2012

Ну, я думаю, вы пытаетесь добиться следующего рабочего процесса, Index page -> Publish page -> click submit -> update the attributes -> return back to Index page with flash message

Мы не можем достичь обоих с помощью одного действия, поэтому добавим еще одно действие

events_controller

# Will take user to confirm page, where we display the form with "Yes publish now" and "cancel" button
def confirm_publish
  @event = Event.find(params[:id])
end

# When user clicks the "yes publish now" button, request should come here and perform the same.
def publish
  @event = Event.find(params[:id])
  if @event.update_attributes(:published_at => DateTime.now, :publish => true)
    flash[:success] = "Your event has been publish"
    redirect_to events_path
  end
end

Соответственно нам нужно изменить виды и маршруты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...