使用link_to将params传递给rails中的窗体hidden_​​field

时间:2017-08-22 17:51:18

标签: ruby-on-rails

我的应用中有一个has_many through:关系person has_many occasionsgifts,反之亦然。我有一个图表,y轴为person,x轴为occasion,如下所示:

enter image description here

代码是这样的:

<table>
    <tr>
            <th></th>
        <% @occasions.each do |occasion| %>
            <th style="padding: 0 5px 0 5px"><p><%= occasion.name %></p></th>
        <% end %>
    </tr>
    <% @people.each do |person| %>
        <tr>
            <td>
                <a href="#edit-recipient-popup" class="open-popup-link">
                    <p><strong><%= person.name %></strong></p>
                </a>
            </td>
            <% @occasions.each do |occasion| %>
                <td class="text-center">
                    <% gifts = Gift.where(person_id: person.id, occasion_id: occasion.id) %>
                    <% if gifts != [] %>
                        <% gifts.each do |gift| %>
                            <div class="text-left">
                                <% if gift.purchased %>
                                    <i class="icon ion-android-checkbox-outline green"></i>
                                <% else %>
                                    <i class="icon ion-android-checkbox-outline-blank green"></i>
                                <% end %>
                                <%= link_to gift.name, gift_path(gift.id), person_id: person.id, occasion_id: occasion.id %>
                            </div>
                        <% end %>
                    <% else %>
                        <h1>
                            <%= link_to new_gift_path do %>
                                <i class="icon ion-ios-plus-empty green"></i>
                            <% end %> <!-- link -->
                        </h1>
                    <% end %> <!-- if/else end -->
                </td>
            <% end %> <!-- occasions each -->
        </tr>
    <% end %> <!-- people each -->
</table>

我不知何故需要更改新礼物的链接:

<%= link_to gift.name, gift_path(gift.id) %>

以某种方式传递加号所指示的personoccasion的参数。以下不起作用,但我需要这样的东西:

<%= link_to gift.name, gift_path(gift.id), person_id: person.id, occasion_id: occasion.id %>

我检查过其他一些SO帖子,但找不到符合我要求的帖子。

理想情况下,我可以在link_to中添加参数,以便在gift#new的表单出现时,我可以包含带有相关值的隐藏字段,如下所示:

<%= simple_form_for(@gift) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">
    <%= f.input :name %>
    <%= f.input :price %>
    <%= f.input :description %>
    <%= f.input :link %>
    <%= f.input :purchased %>
    <%= f.association :user %>
    <%= f.text_field :occasion_id, value: @occasion %>
    <%= f.text_field :person_id, value: @person %>
  </div>

  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>

我知道在Rails中这样的事情是可能的,但是我无法弄清楚语法。

附加信息

我尝试使用以下链接建议here的方法:

<%= link_to new_gift_path(:gift => { person_id: person.id, occasion_id: occasion.id }) do %>

这样的gifts#new控制器方法:

def new
  @gift = Gift.new(params[:gift])
end

但是这种方法在ActiveModel::ForbiddenAttributesError的控制器定义上给出了一个错误@gift

0 个答案:

没有答案