Rails新手在这里。
我有一个items
列表,其中status
可以用整数表示(现在只有1 =有效0 =无效)。
我想要的是每个item
链接旁边的一个链接,用于更改该项目的status
。所以它可能看起来像这样:
一个不错的项目 - 启用
另一个漂亮的项目 - 禁用
我想不出如何使链接工作。我只是希望用户点击该链接,然后页面刷新并item
更新。
这不起作用:
<%= link_to "Enable", :controller => "items", :action => "update", :status => 1 %>
答案 0 :(得分:1)
我会做类似
的事情# view
<% @items.each do |item| %>
# ...
link = link_to_remote((item.active? "Disable" : "Enable"), :url => {
:controller => "items", :action => "swap_status", :id => item.id
})
<%= item.name %> - <%= link %>
<% end %>
# item model
class Item < ActiveRecord::Base
# ...
def active?
self.status == 1
end
end
# items controller
class ItemsController < ApplicationController
# ...
def swap_status
item = Item.find(params[:id])
new_status = item.active? ? 0 : 1
item.update_attribute(:status, new_status)
# and then you have to update the link in the view,
# which I don't know exactly how to do yet.
end
end
我知道它不完整......但我希望它能以某种方式帮助你:]
答案 1 :(得分:1)
如果您实现了默认的rails控制器,那么</ p>
<%= link_to "Enable", :controller => "items", :action => "update", :status => 1 %>
无效,因为在更新操作rails调用
@item.update_attributes(params[:item])
并且状态将作为
进入控制器params[:status]
除此之外,要调用update,方法必须是PUT。
尝试将链接更改为:
<%= link_to "Enable", :controller => "items", :action => "update", :method => :put :item => {:status => 1} %>