我想要下一件事:
单击按钮时,我想打印params[:id]
的{{1}}。
这是我的java脚本代码:
welcome controller
这是我的$(".btn_skip").click(function() {
$.ajax({
url: '/welcome',
type: 'PUT',
data: {show_msg: $("#mycheckbox").is(":checked")}
});
});
:
welcome_controller.rb
当我跑:class WelcomeController < ApplicationController
def update
@user = User.find(params[:id])
puts params[:id]
end
end
并按下按钮(btn_skip)时,我得到了:
rails s
routes.rb中:
Started PUT "/welcome" for 127.0.0.1 at 2013-02-05 12:18:26 +0200
ActionController::RoutingError (No route matches [PUT] "/welcome"):
resources :welcome
:
rake routes
也许,我应该在welcome_index GET /welcome(.:format) welcome#index
POST /welcome(.:format) welcome#create
new_welcome GET /welcome/new(.:format) welcome#new
edit_welcome GET /welcome/:id/edit(.:format) welcome#edit
welcome GET /welcome/:id(.:format) welcome#show
PUT /welcome/:id(.:format) welcome#update
DELETE /welcome/:id(.:format) welcome#destroy
中传递ID吗?
如果是这样,我怎样才能获得身份证?也许是:url:&#39; / welcome /#{:id}&#39;?
任何帮助表示赞赏!
答案 0 :(得分:2)
如果使用html.erb模板生成Javascript,则使用内置的url生成器。 e.g。
这是我的Index.html.erb
<% @device_layouts.each do |device_layout| %>
<tr>
<td><%= link_to 'Show', device_layout %></td>
<td><%= link_to 'Edit', edit_device_layout_path(device_layout) %></td>
<td><%= link_to 'Destroy', device_layout, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
其中edit_device_layout_path(device_layout)
将自动为我创建网址。
所以,假设我实际上使用的是javascript,并且上面的每个项目都有多个编辑按钮,那么代码可能看起来像这样:
<% @device_layouts.each do |device_layout| %>
<tr>
<td><%= link_to 'Show', device_layout %></td>
<td>
<script type="text/javascript">
$(".btn_edit").click(function() {
$.ajax({
url: '/welcome/<%=device_layout.id%>',
type: 'PUT',
data: {show_msg: $("#mycheckbox").is(":checked")}
});
});
</script>
<div class="btn_edit">Edit Me</div>
</td>
<td><%= link_to 'Destroy', device_layout, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
答案 1 :(得分:1)
我建议你使用rails form helper而不是plain html。无论如何它是您的选择,使用当前实现,您可以向表单添加隐藏字段。我假设你想传递current_user的id来更新动作。
<input type="hidden" id="current_user" value="<%= current_user.id %>" />
现在在你的javascript代码中:
$("#submit").click(function() {
user_id = $('#current_user').val();
$.ajax({
## the url is the controller
url: '/welcome' + user_id,
type: 'PUT',
data: {show_msg: $("#mycheckbox").is(":checked")}
});
});
多数民众赞成!它将获取用户ID并将自动传递给更新操作。 :)