调用对象并将其传递给控制器中的自定义方法
Calling and passing objects to a custom method in the controller
我有,我必须想象的是一个关于调用自定义控制器方法并将数据传递给它们的非常简单的问题。
我已经向控制器添加了一个自定义方法 dprocess
,目的是作用于我在 index
中列出的 post objects
,以某种方式调用按钮。方法 dprocess
没有任何视图,只是简单地处理 post
中的数据并将结果保存到 /tmp/
中的文件中。我遇到的问题是我不知道如何将数据传递给这个自定义方法。
这是我的 index.html.erb
<% @post.each do |post| %>
<tr>
<td class="Name"><%= link_to post.name, post %></td>
<td class="created_at"><%= link_to "Edit Post", edit_post_path(post) %></td>
<td class="generate"><%= button_to "Process Post", ........ %></td>
</tr>
<% end %>
注意button_to
中的“.......”;缺少的内容是我正在努力弄清楚的内容。
我的问题是:如何将post
传递给控制器中的这个自定义方法?
非常感谢您的指导;这个问题一直困扰着我。
您可以在 link_to
、button_to
方法上使用特殊属性 remote
来指示您要执行 AJAX 操作。
假设您的路线如下:
resources :posts do
member do
# note: the post here means a HTTP POST request is necessary, if you want
# a HTTP GET request, change it to get
post 'dprocess'
end
end
所以 url 看起来像 /posts/:id/dprocess
然后你可以在点击这样的按钮时执行AJAX请求,请
确保根据您配置路由的方式将 method
属性更改为 :post
或 :get
。
<% @post.each do |post| %>
<tr>
<td class="Name"><%= link_to post.name, post %></td>
<td class="created_at"><%= link_to "Edit Post", edit_post_path(post) %></td>
<td class="generate"><%= button_to "Process Post", dprocess_post_path(post), :remote => true, :method => :post %></td>
</tr>
<% end %>
这将调用您的控制器操作 dprocess
使用 POST 请求:
def dprocess
# find object
@post = Post.find(params[:id])
# ... perform processing
# render nothing
render :nothing => true
end
查看文档通常是一个很好的指导:
我有,我必须想象的是一个关于调用自定义控制器方法并将数据传递给它们的非常简单的问题。
我已经向控制器添加了一个自定义方法 dprocess
,目的是作用于我在 index
中列出的 post objects
,以某种方式调用按钮。方法 dprocess
没有任何视图,只是简单地处理 post
中的数据并将结果保存到 /tmp/
中的文件中。我遇到的问题是我不知道如何将数据传递给这个自定义方法。
这是我的 index.html.erb
<% @post.each do |post| %>
<tr>
<td class="Name"><%= link_to post.name, post %></td>
<td class="created_at"><%= link_to "Edit Post", edit_post_path(post) %></td>
<td class="generate"><%= button_to "Process Post", ........ %></td>
</tr>
<% end %>
注意button_to
中的“.......”;缺少的内容是我正在努力弄清楚的内容。
我的问题是:如何将post
传递给控制器中的这个自定义方法?
非常感谢您的指导;这个问题一直困扰着我。
您可以在 link_to
、button_to
方法上使用特殊属性 remote
来指示您要执行 AJAX 操作。
假设您的路线如下:
resources :posts do
member do
# note: the post here means a HTTP POST request is necessary, if you want
# a HTTP GET request, change it to get
post 'dprocess'
end
end
所以 url 看起来像 /posts/:id/dprocess
然后你可以在点击这样的按钮时执行AJAX请求,请
确保根据您配置路由的方式将 method
属性更改为 :post
或 :get
。
<% @post.each do |post| %>
<tr>
<td class="Name"><%= link_to post.name, post %></td>
<td class="created_at"><%= link_to "Edit Post", edit_post_path(post) %></td>
<td class="generate"><%= button_to "Process Post", dprocess_post_path(post), :remote => true, :method => :post %></td>
</tr>
<% end %>
这将调用您的控制器操作 dprocess
使用 POST 请求:
def dprocess
# find object
@post = Post.find(params[:id])
# ... perform processing
# render nothing
render :nothing => true
end
查看文档通常是一个很好的指导: