

indexから部分テンプレートを呼び出し、その部分テンプレートからも  
さらに部分テンプレートを呼び出しております。

一番下の階層の_shared/tag_listで  
prepque_origques_pathを指定しており、こちらを何かの変数に  
置き換えることで、他のviewからも呼び出せるようにしたいのですが  
うまくできません。

prepque_origques_pathをindexで指定し  
_shared/origque_content→_shared/tag_listと  
変数を渡していくのはどのように記述すれば良いでしょうか?

**index**

[code]

    <% @origques.each do |origque| %>
    　<%= render partial: "_shared/origque_content", locals: { origque_content: origque,
              　  origque_url:prepque_origque_path(origque.prepque.id,origque.id),
              　  origque_memo_url:prepque_origque_memos_path(origque_id: origque.id) } %>
    <% end %>
    
[/code]

**_shared/origque_content**

[code]

    <%= render '_shared/tag_list', tag_list: origque_content.grammar_list %></div>
    
[/code]

**_shared/tag_list**

[code]

    <% tag_list.each do |tag| %>
         <%=link_to tag, **prepque_origques_path**(tag_name: tag,order:params[:order],column:params[:column]), class:"label label-primary" %>
    <% end %>
    
[/code]

下記のように記述してみましたが、エラーになってしまします。

[code]

    <%= render '_shared/tag_list', tag_list: origque_content.grammar_list, path: prepque_origques_path %>
    
[/code]

[code]

    <%=link_to tag, path(tag_name:tag,order:params[:order]" %>
    
[/code]


CC BY-SA 4.0
2020-01-15T12:15:34.087
62266
2020-12-09T17:03:25.350
2020-01-16T10:33:16.533
37468
37468
question
ruby-on-rails ruby
Rails 部分テンプレートでpathを変数に置き換える方法について


以下のような感じでいかがでしょうか?

[code]

    <%= render '_shared/tag_list', tag_list: origque_content.grammar_list, path: :prepque_origques_path %>
    
[/code]

と

[code]

    <%=link_to tag, send(path, tag_name: tag, order: params[:order]) %>
    
[/code]

手元で試していないので、うまくいかなかったらすみません。

Ruby では、メソッドはオブジェクトではないので、そのまま引数として渡すことはできません。代わりにシンボルを渡します。  
そして、シンボルをメソッド名と見なして呼び出すには、`send` を使います。


CC BY-SA 4.0
2020-01-26T12:07:35.407
62559
2020-01-26T12:07:35.407
5288
62266
answer

[code]

    <%= render '_shared/tag_list', tag_list: origque_content.grammar_list, path: :prepque_origques_path %>
    
[/code]

と

[code]

    <%=link_to tag, send(path, tag_name: tag, order: params[:order]) %>
    
[/code]

で渡すことができました。


CC BY-SA 4.0
2020-01-28T13:48:28.433
62612
2020-01-28T13:48:28.433
37468
62266
answer