【问题标题】:Using radio buttons and link_to with Ruby on Rails在 Ruby on Rails 中使用单选按钮和 link_to
【发布时间】:2012-02-19 10:39:31
【问题描述】:

这里有点 Rails 新手,所以请多多包涵。

我试图通过首先列出每个条目的单选按钮,然后将条目的字段仅作为文本列出来在表格中列出一堆条目。

它工作正常,它也以我想要的方式显示。但是,问题是每当我使用我的按钮时。这个想法是让用户选择一个单选按钮来选择一个特定的配方,然后单击页面顶部的通用添加、编辑、删除按钮之一,以对所选配方执行相应的操作。

到目前为止,这是我的代码:

<!--Action buttons at the top of page, supposed to communicate with the radio buttons --> 
<%= link_to("Show", {:action => 'show', :id => recipe.id}, :class => 'action show') %>
<%= link_to("Edit", {:action => 'edit', :id => recipe.id}, :class => 'action edit') %>
<%= link_to("Delete", {:action => 'delete', :id => recipe.id}, :class => 'action delete') %> 

<% @recipes.each do |recipe| %>
<tr>
  <td><%= radio_button_tag 'recipe', recipe, @recipe == recipe %></td>
  <td><%= recipe.total_calories %></td>
  <td><%=........15 more fields
</tr>`
<% end unless @recipes.nil? %>

未定义的局部变量或方法“recipe”向我抛出了错误。我明白为什么会出现错误; Ruby 并不确切知道用​​户通过单选按钮选择了哪个配方。有人可以告诉我如何让单选按钮与操作按钮进行通信吗?

【问题讨论】:

    标签: html ruby ruby-on-rails-3 radio-button


    【解决方案1】:

    最直接的方法是创建一个包含动作作为提交按钮值的表单。比如:

    <%= form_tag(PATH_TO_YOUR_CONTROLLER) do %>
       <%= submit_tag("Show") %>
       <%= submit_tag("Edit") %>
       <%= submit_tag("Delete") %>
    
       RECIPE_LIST_HERE
    <% end >
    

    然后您的控制器将需要查看提交的操作和配方(我相信这些将在 params[:commit] 和 params[:recipe] 下)。

    【讨论】:

    • 有什么方法可以用link_to's 做到这一点吗?还是太复杂和耗时?
    • 您可以将 onClick javascript 处理程序添加到您的 link_to 以设置包含操作的隐藏表单字段,然后提交表单。但是如果你的目标只是让你的按钮看起来像链接,你可以使用 CSS。
    • 出于某种原因,每次我尝试通过“variableName = params[:recipe]”访问控制器中的 params[:recipe] 并尝试记录变量时,它总是显示为 nil。我做得对吗?
    • 嗯,也许它在另一个键下。如果您登录params.inspect,它会显示与所选食谱相关的任何内容吗?
    • 当然,效果很好,我没有意识到食谱被某些东西“限定”了。
    猜你喜欢
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多