Как создать кнопку в приложении Rails, чтобы позволить пользователю изменять ActiveRecord? - PullRequest
0 голосов
/ 20 сентября 2011

Я хочу, чтобы пользователь щелкнул ссылку, которая изменит запись ActiveRecord. Запись называется feed.disabled, и ссылка будет переключать эту запись между true и false. Я сделал вспомогательный метод для определения текста по ссылке:

def disable_button(feed)
  if feed.disabled?
    return 'Enable Feed'
  else
    return 'Disable Feed'
  end
end

Так что мой вопрос действительно двойственный. Будет ли этот помощник работать для отображения правильного текста в представлении, и как мне получить эту ссылку, чтобы изменить запись feed.disabled на true или false в зависимости от текущего состояния?

Изменить, чтобы добавить методы, основанные на руководстве Дэйва:

feeds_controller.rb:

def toggle_disabled_record
  @feed = Project.find(params[:project_id]).feeds.find(params[:id])
  @feed.toggle!(:disabled)
  render :nothing => true
end

projects->show.html.erb

<%= link_to toggle_disable_button(feed), toggle_disabled_record_project_feed_path(feed) %>

routes.rb:

resources :projects do
  resources :feeds
end

resources :feeds do
  resources :xml_fields
  get toggle_disabled_record, :on => :member
end

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

Взгляните на (мой) этот пост ;это ссылка, а не кнопка, но более или менее прямо обращается к этому.

1 голос
/ 20 сентября 2011

Помощник будет работать, но его имя дает представление о том, что он вернет фактический элемент кнопки.

Возможно, вы сгенерируете такую ​​кнопку, используя button_to с помощником, который выглядит примерно так:

def toggle_disable_button(feed)
  button_text = feed.disabled? ? 'Enable feed' : 'Disable feed'

  button_to(button_text, toggle_feed_disabled_path(feed))
end

Это, конечно, зависит от того, что у вас есть соответствующее действие контроллера и маршрут. Вы также можете создать такую ​​кнопку:

button_tag(button_text, :name => 'feed[disabled]', :value => !feed.disabled?)

но это может работать не во всех браузерах.

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