我希望用户单击将修改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
?< / p>
编辑以根据Dave指南添加方法:
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
答案 0 :(得分:2)
看看(我的)this blog post;它是一个链接,而不是一个按钮,但或多或少直接解决了这个问题。
答案 1 :(得分:1)
帮助程序可以工作,但它的名称表明它会返回实际的按钮元素。
您可以使用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?)
但这可能不适用于所有浏览器。