XML*_*yer 2 ruby ruby-on-rails ruby-on-rails-3
我有一个页面,我通过控制器的索引操作呈现.我想添加一个链接到这个页面,它将重新加载当前页面,但我希望它首先路由到另一个动作.
这是我的routes.rb文件的样子:
match 'users/:id/food' => 'foods#index', :as => :foods_show
match 'users/:id/food' => 'foods#sell', :as => :food_sell
Run Code Online (Sandbox Code Playgroud)
我的link_to:
<%= link_to "Sell this Food", food_sell_path(current_user.id) %>
Run Code Online (Sandbox Code Playgroud)
因此页面通常通过食物#index呈现,但是当用户点击此链接时,我想重新加载当前页面,但是通过与索引不同的操作.
控制器代码:
def index
@user = User.find(params[:id])
@food = @user.foods
end
def sell
@user = User.find(params[:id])
@food = @user.foods
redirect_to foods_show_path(@user.id), :notice => "You have sold one item!"
end
Run Code Online (Sandbox Code Playgroud)
谢谢!
您无法将相同的网址与不同的操作匹配,因为基本上它们是相同的.您需要更改网址中的内容,或更改动词(获取,发布,放置,删除)或添加一些参数来区分它们.
例如,get用于索引和post卖出:
get 'users/:id/food' => 'foods#index', :as => :foods_show
post 'users/:id/food' => 'foods#sell', :as => :food_sell
Run Code Online (Sandbox Code Playgroud)
并在您的链接中将方法设置为post:
<%= link_to "Sell this Food", food_sell_path(current_user.id, :_method => 'post') %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1986 次 |
| 最近记录: |